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
- DbXmlEnabledProviderManifest.cs
- StrokeCollectionDefaultValueFactory.cs
- FontStretch.cs
- InternalCache.cs
- WebMessageEncodingBindingElement.cs
- PreviewPageInfo.cs
- SvcMapFileLoader.cs
- Keyboard.cs
- FlowLayout.cs
- BridgeDataRecord.cs
- CodeObject.cs
- Exceptions.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- Dictionary.cs
- AsyncDataRequest.cs
- XmlDomTextWriter.cs
- Command.cs
- ObjectHandle.cs
- OleDbConnectionInternal.cs
- DataGridRelationshipRow.cs
- SizeFConverter.cs
- CallbackValidator.cs
- ProcessProtocolHandler.cs
- FontResourceCache.cs
- indexingfiltermarshaler.cs
- PrintingPermission.cs
- TextMessageEncodingBindingElement.cs
- SendKeys.cs
- EdmProviderManifest.cs
- TableDetailsCollection.cs
- NonVisualControlAttribute.cs
- ExtentCqlBlock.cs
- AlternateViewCollection.cs
- WebColorConverter.cs
- HealthMonitoringSectionHelper.cs
- SafeNativeMethods.cs
- HwndHost.cs
- ConstructorExpr.cs
- InternalConfigEventArgs.cs
- WebPartConnectionCollection.cs
- WindowsListViewScroll.cs
- SystemDropShadowChrome.cs
- JsonWriter.cs
- HybridObjectCache.cs
- assertwrapper.cs
- OracleCommandSet.cs
- CheckBoxPopupAdapter.cs
- recordstatescratchpad.cs
- PackageFilter.cs
- sqlmetadatafactory.cs
- ClientSideProviderDescription.cs
- ProxyElement.cs
- SpotLight.cs
- WsdlServiceChannelBuilder.cs
- Line.cs
- SequentialWorkflowRootDesigner.cs
- XMLDiffLoader.cs
- ExclusiveCanonicalizationTransform.cs
- ScriptBehaviorDescriptor.cs
- coordinator.cs
- ObjectSet.cs
- UnmanagedMemoryStreamWrapper.cs
- RunWorkerCompletedEventArgs.cs
- TypeTypeConverter.cs
- EntityStoreSchemaGenerator.cs
- PrintingPermissionAttribute.cs
- EntityDataSourceChangedEventArgs.cs
- WorkflowNamespace.cs
- InternalTransaction.cs
- DesignTimeData.cs
- _DisconnectOverlappedAsyncResult.cs
- CaseCqlBlock.cs
- UnknownBitmapDecoder.cs
- PnrpPermission.cs
- PageHandlerFactory.cs
- MetaForeignKeyColumn.cs
- EncodingInfo.cs
- Axis.cs
- TreePrinter.cs
- WebHttpEndpoint.cs
- ChangePassword.cs
- ParserContext.cs
- DES.cs
- ElementHostAutomationPeer.cs
- LocalizableAttribute.cs
- RowUpdatedEventArgs.cs
- TypeSource.cs
- SafeNativeMethods.cs
- InheritablePropertyChangeInfo.cs
- dsa.cs
- HebrewNumber.cs
- FixedTextView.cs
- GraphicsContainer.cs
- ListChangedEventArgs.cs
- WebPartTransformerAttribute.cs
- ParagraphResult.cs
- XdrBuilder.cs
- InputLanguageManager.cs
- EncryptedType.cs
- CloseCryptoHandleRequest.cs