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
- Menu.cs
- SecurityListenerSettingsLifetimeManager.cs
- DBDataPermission.cs
- HttpUnhandledOperationInvoker.cs
- SharingService.cs
- BoundPropertyEntry.cs
- MenuBase.cs
- ListComponentEditorPage.cs
- BamlRecords.cs
- Int64.cs
- DynamicUpdateCommand.cs
- FastEncoderWindow.cs
- ExpressionStringBuilder.cs
- QilInvoke.cs
- EntityDesignPluralizationHandler.cs
- ClrProviderManifest.cs
- __Filters.cs
- Emitter.cs
- FixedTextBuilder.cs
- PrinterResolution.cs
- AppearanceEditorPart.cs
- BindingList.cs
- EntityConnectionStringBuilder.cs
- DebuggerAttributes.cs
- ComponentSerializationService.cs
- DataPagerFieldItem.cs
- RuntimeArgumentHandle.cs
- ArgumentException.cs
- ImageDrawing.cs
- ConfigurationManagerHelperFactory.cs
- TemplatedMailWebEventProvider.cs
- ProcessStartInfo.cs
- SystemWebCachingSectionGroup.cs
- StringTraceRecord.cs
- BitArray.cs
- CollectionType.cs
- ArrayHelper.cs
- Types.cs
- EditingCommands.cs
- QueryTaskGroupState.cs
- ConfigurationConverterBase.cs
- TreeNodeMouseHoverEvent.cs
- EventData.cs
- EntityClassGenerator.cs
- Link.cs
- SecurityPermission.cs
- ClientConfigPaths.cs
- FileVersion.cs
- ButtonPopupAdapter.cs
- ExpressionPrefixAttribute.cs
- MessageQueuePermissionAttribute.cs
- GridViewHeaderRowPresenter.cs
- MarkupProperty.cs
- DescendantOverDescendantQuery.cs
- ToolStripItemRenderEventArgs.cs
- AttributeCollection.cs
- MethodRental.cs
- WebPartZoneBase.cs
- AutoGeneratedField.cs
- XNodeValidator.cs
- CqlParserHelpers.cs
- TextOutput.cs
- BufferedWebEventProvider.cs
- WebPartManagerDesigner.cs
- XmlUrlResolver.cs
- ContentPlaceHolder.cs
- SourceLineInfo.cs
- X509CertificateStore.cs
- UndirectedGraph.cs
- InfoCardSymmetricCrypto.cs
- MarkupCompilePass2.cs
- DataGridViewSelectedRowCollection.cs
- PolyLineSegment.cs
- WebPartUserCapability.cs
- LinkButton.cs
- XmlSchemaInclude.cs
- TextEffectCollection.cs
- MonthChangedEventArgs.cs
- ISFTagAndGuidCache.cs
- MembershipSection.cs
- SymbolMethod.cs
- PanelDesigner.cs
- ControlCommandSet.cs
- RNGCryptoServiceProvider.cs
- SQLDecimal.cs
- PathGradientBrush.cs
- FragmentQueryProcessor.cs
- HtmlInputFile.cs
- XmlRawWriter.cs
- Rectangle.cs
- EditorPart.cs
- XamlNamespaceHelper.cs
- PenThreadPool.cs
- CheckableControlBaseAdapter.cs
- InternalControlCollection.cs
- AutoCompleteStringCollection.cs
- IntSecurity.cs
- Inflater.cs
- XmlnsDictionary.cs
- TemplatedWizardStep.cs