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
- ImageSource.cs
- TextProperties.cs
- login.cs
- DbSetClause.cs
- EastAsianLunisolarCalendar.cs
- SafeEventLogWriteHandle.cs
- ThemeDictionaryExtension.cs
- XpsResourceDictionary.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- SqlConnectionManager.cs
- FocusTracker.cs
- MouseCaptureWithinProperty.cs
- CustomWebEventKey.cs
- ModelPerspective.cs
- PerformanceCounterManager.cs
- EntitySqlQueryBuilder.cs
- SourceElementsCollection.cs
- CalendarDataBindingHandler.cs
- XmlTypeAttribute.cs
- StylusButtonEventArgs.cs
- WebScriptEnablingBehavior.cs
- EditorPartCollection.cs
- NTAccount.cs
- FlowDocumentFormatter.cs
- NativeWindow.cs
- PartialTrustHelpers.cs
- Cell.cs
- DataRowExtensions.cs
- TypeLibConverter.cs
- FixedDocument.cs
- mansign.cs
- UnsignedPublishLicense.cs
- CompoundFileReference.cs
- PatternMatcher.cs
- TextServicesDisplayAttribute.cs
- ModelTreeManager.cs
- EnvelopeVersion.cs
- Header.cs
- IntSumAggregationOperator.cs
- ScrollChrome.cs
- XmlILCommand.cs
- TextBlock.cs
- _OverlappedAsyncResult.cs
- Int32RectValueSerializer.cs
- DbParameterCollectionHelper.cs
- ListViewGroup.cs
- PageSettings.cs
- SpecialFolderEnumConverter.cs
- Clock.cs
- EmptyWorkItem.cs
- TextCompositionManager.cs
- ComEventsMethod.cs
- BufferedGraphics.cs
- LogManagementAsyncResult.cs
- WindowsEditBox.cs
- BitmapEffectGeneralTransform.cs
- CryptoStream.cs
- HiddenFieldPageStatePersister.cs
- AnimationLayer.cs
- MonikerProxyAttribute.cs
- SafeSecurityHandles.cs
- JsonQNameDataContract.cs
- MSAAWinEventWrap.cs
- DictionarySectionHandler.cs
- MeshGeometry3D.cs
- HyperLinkField.cs
- TraceContext.cs
- TypeBuilderInstantiation.cs
- RowBinding.cs
- DateTimeConstantAttribute.cs
- TypographyProperties.cs
- Slider.cs
- EncryptedKey.cs
- TableColumn.cs
- OdbcConnectionStringbuilder.cs
- FormsAuthenticationConfiguration.cs
- BaseValidator.cs
- OdbcParameter.cs
- HTTPNotFoundHandler.cs
- RtfToXamlLexer.cs
- RewritingValidator.cs
- PersonalizationProviderHelper.cs
- XmlILModule.cs
- xdrvalidator.cs
- Operators.cs
- ScriptReference.cs
- ScriptModule.cs
- xdrvalidator.cs
- ProxyWebPartConnectionCollection.cs
- BuildManagerHost.cs
- ZipIOBlockManager.cs
- DataTrigger.cs
- ValidatorAttribute.cs
- SystemException.cs
- SelectionProviderWrapper.cs
- StorageConditionPropertyMapping.cs
- QueuePathDialog.cs
- FormatPage.cs
- CheckBoxDesigner.cs
- MultiAsyncResult.cs