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
- DesignTimeData.cs
- KeyGesture.cs
- HandlerFactoryWrapper.cs
- ComponentCodeDomSerializer.cs
- WindowsEditBox.cs
- RootAction.cs
- UseLicense.cs
- BrowsableAttribute.cs
- X509Certificate.cs
- ScrollBar.cs
- WebContext.cs
- PipeStream.cs
- PointLight.cs
- DesignerSerializationOptionsAttribute.cs
- DbConnectionPool.cs
- OleDbErrorCollection.cs
- SqlVisitor.cs
- PropertyValidationContext.cs
- AlphabeticalEnumConverter.cs
- ValidatedControlConverter.cs
- PrintingPermissionAttribute.cs
- WizardStepBase.cs
- QueryCacheManager.cs
- SerializationInfoEnumerator.cs
- DataGridColumnHeader.cs
- CodeGeneratorOptions.cs
- XslUrlEditor.cs
- CardSpaceShim.cs
- DataTableClearEvent.cs
- ListParagraph.cs
- EmissiveMaterial.cs
- PrincipalPermission.cs
- MatchingStyle.cs
- DataObjectEventArgs.cs
- HttpValueCollection.cs
- SessionStateSection.cs
- LongValidator.cs
- glyphs.cs
- ActivityDesignerLayoutSerializers.cs
- GlobalizationAssembly.cs
- XmlComplianceUtil.cs
- ReadingWritingEntityEventArgs.cs
- WebPartUtil.cs
- HtmlInputText.cs
- XmlSerializationReader.cs
- Formatter.cs
- RijndaelCryptoServiceProvider.cs
- FilteredReadOnlyMetadataCollection.cs
- Guid.cs
- TextTreeFixupNode.cs
- wpf-etw.cs
- GeneralTransform.cs
- ExceptionHandlerDesigner.cs
- TextBox.cs
- MissingFieldException.cs
- ConfigurationErrorsException.cs
- Visual3D.cs
- SingleAnimationBase.cs
- SecurityTokenValidationException.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- TrackingServices.cs
- SHA256.cs
- ResourceWriter.cs
- Mapping.cs
- InvalidDataContractException.cs
- SoapFormatterSinks.cs
- ClientBuildManagerCallback.cs
- BasicHttpSecurityMode.cs
- AnnotationComponentManager.cs
- ListViewItem.cs
- CardSpaceException.cs
- UriExt.cs
- StylusOverProperty.cs
- cookiecollection.cs
- HtmlDocument.cs
- ServerIdentity.cs
- CodeTypeOfExpression.cs
- ConnectionAcceptor.cs
- NullableIntAverageAggregationOperator.cs
- GZipDecoder.cs
- SystemColorTracker.cs
- NumberSubstitution.cs
- RenderDataDrawingContext.cs
- DocumentViewerConstants.cs
- KeyboardDevice.cs
- AdCreatedEventArgs.cs
- FactoryMaker.cs
- CheckPair.cs
- DataGridViewColumnCollection.cs
- OperandQuery.cs
- RegisteredArrayDeclaration.cs
- NumericUpDownAcceleration.cs
- CodeTypeMember.cs
- SqlNodeAnnotations.cs
- WrapPanel.cs
- SubpageParagraph.cs
- AnnotationComponentManager.cs
- BamlStream.cs
- TreeIterators.cs
- PresentationAppDomainManager.cs