Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / CustomBindingCollectionElement.cs / 1 / CustomBindingCollectionElement.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Configuration { using System.Collections.Generic; using System.Collections.ObjectModel; using System.Configuration; using System.Globalization; using System.ServiceModel; using System.ServiceModel.Channels; public sealed partial class CustomBindingCollectionElement : BindingCollectionElement { [ConfigurationProperty(ConfigurationStrings.DefaultCollectionName, Options = ConfigurationPropertyOptions.IsDefaultCollection)] public CustomBindingElementCollection Bindings { get {return (CustomBindingElementCollection) base[ConfigurationStrings.DefaultCollectionName]; } } public override Type BindingType { get {return typeof(CustomBinding); } } public override ReadOnlyCollectionConfiguredBindings { get { List configuredBindings = new List (); foreach (IBindingConfigurationElement configuredBinding in this.Bindings) { configuredBindings.Add(configuredBinding); } return new ReadOnlyCollection (configuredBindings); } } public override bool ContainsKey(string name) { // This line needed because of the IBindingSection implementation return this.Bindings.ContainsKey(name); } protected internal override Binding GetDefault() { return System.Activator.CreateInstance (); } internal static CustomBindingCollectionElement GetBindingCollectionElement() { return (CustomBindingCollectionElement)ConfigurationHelpers.GetBindingCollectionElement(ConfigurationStrings.CustomBindingCollectionElementName); } bool TryCreateMatchingExtension(BindingElement bindingElement, ExtensionElementCollection collection, bool allowDerivedTypes, string assemblyName, out BindingElementExtensionElement result) { result = null; foreach (ExtensionElement element in collection) { BindingElementExtensionElement bindingElementExtension = Activator.CreateInstance(Type.GetType(element.Type, true)) as BindingElementExtensionElement; if (null == bindingElementExtension) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigInvalidExtensionType, element.Type, assemblyName, ConfigurationStrings.BindingElementExtensions))); } bool isMatch; if (allowDerivedTypes) { isMatch = bindingElementExtension.BindingElementType.IsAssignableFrom(bindingElement.GetType()); } else { isMatch = bindingElementExtension.BindingElementType.Equals(bindingElement.GetType()); } if (isMatch) { result = bindingElementExtension; return true; } } return false; } protected internal override bool TryAdd(string name, Binding binding, Configuration config) { if (String.IsNullOrEmpty(name)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name"); } if (null == binding) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("binding"); } if (null == config) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("config"); } ServiceModelSectionGroup sg = ServiceModelSectionGroup.GetSectionGroup(config); CustomBindingElementCollection customBindings = sg.Bindings.CustomBinding.Bindings; CustomBindingElement configElement = new CustomBindingElement(name); customBindings.Add(configElement); ExtensionElementCollection collection = sg.Extensions.BindingElementExtensions; CustomBinding customBinding = (CustomBinding) binding; foreach (BindingElement bindingElement in customBinding.Elements) { BindingElementExtensionElement bindingElementExtension; bool foundMatch = TryCreateMatchingExtension(bindingElement, collection, false, configElement.CollectionElementBaseType.AssemblyQualifiedName, out bindingElementExtension); if (!foundMatch) { foundMatch = TryCreateMatchingExtension(bindingElement, collection, true, configElement.CollectionElementBaseType.AssemblyQualifiedName, out bindingElementExtension); } if (!foundMatch) { break; } bindingElementExtension.InitializeFrom(bindingElement); configElement.Add(bindingElementExtension); } bool retval = configElement.Count == customBinding.Elements.Count; if (!retval) { customBindings.Remove(configElement); } return retval; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlHierarchyData.cs
- DocumentSignatureManager.cs
- DiagnosticsConfiguration.cs
- TextPointerBase.cs
- Border.cs
- BuiltInPermissionSets.cs
- MatrixStack.cs
- Path.cs
- Odbc32.cs
- CfgRule.cs
- _NegotiateClient.cs
- DataPagerFieldItem.cs
- ViewManager.cs
- KnownBoxes.cs
- ClientOptions.cs
- DbMetaDataCollectionNames.cs
- Icon.cs
- FontCacheUtil.cs
- DocumentViewerAutomationPeer.cs
- GenericIdentity.cs
- ConfigurationProperty.cs
- Point4D.cs
- initElementDictionary.cs
- StringBuilder.cs
- PerfService.cs
- FillErrorEventArgs.cs
- GuidelineSet.cs
- TextRangeEditTables.cs
- InkCanvasSelection.cs
- QueryAccessibilityHelpEvent.cs
- CompositeTypefaceMetrics.cs
- NamespaceListProperty.cs
- OraclePermissionAttribute.cs
- ContextProperty.cs
- DashStyle.cs
- DocumentCollection.cs
- LassoSelectionBehavior.cs
- FixedTextSelectionProcessor.cs
- StreamGeometry.cs
- CompilerState.cs
- SubMenuStyleCollection.cs
- DbParameterCollectionHelper.cs
- CompilationUtil.cs
- ApplicationActivator.cs
- EditorPart.cs
- PropertyGridView.cs
- ResourceDescriptionAttribute.cs
- PackageRelationshipCollection.cs
- TextBox.cs
- BuildProviderCollection.cs
- XmlCharCheckingReader.cs
- ControlHelper.cs
- lengthconverter.cs
- CryptoProvider.cs
- MailSettingsSection.cs
- ToolStripRendererSwitcher.cs
- XmlSortKey.cs
- WebScriptClientGenerator.cs
- GridViewRow.cs
- CompilerWrapper.cs
- DictionaryContent.cs
- Error.cs
- EventListener.cs
- newinstructionaction.cs
- WinFormsSecurity.cs
- DocumentEventArgs.cs
- ColumnClickEvent.cs
- RadioButtonAutomationPeer.cs
- DSACryptoServiceProvider.cs
- TimeStampChecker.cs
- SQLByteStorage.cs
- WindowsPrincipal.cs
- LayoutManager.cs
- ListenUriMode.cs
- PageCatalogPart.cs
- DataGridColumnHeaderAutomationPeer.cs
- DataListItem.cs
- QueryOutputWriterV1.cs
- CompositeActivityDesigner.cs
- FixedSOMLineRanges.cs
- EmbeddedMailObjectsCollection.cs
- FontStyle.cs
- CodeSnippetExpression.cs
- CacheHelper.cs
- ScrollBar.cs
- PtsCache.cs
- ServiceModelActivity.cs
- ThreadStaticAttribute.cs
- EntityDataSourceMemberPath.cs
- SafeProcessHandle.cs
- SQLDateTimeStorage.cs
- XPathScanner.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- VarInfo.cs
- ConfigurationErrorsException.cs
- CacheVirtualItemsEvent.cs
- PenThreadPool.cs
- ScaleTransform.cs
- Simplifier.cs
- RSACryptoServiceProvider.cs