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
- TemplateModeChangedEventArgs.cs
- EastAsianLunisolarCalendar.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- ConstantSlot.cs
- Int32Animation.cs
- Math.cs
- OneOf.cs
- QilIterator.cs
- RoutedCommand.cs
- ChangeTracker.cs
- SmuggledIUnknown.cs
- TemplateComponentConnector.cs
- TreePrinter.cs
- WebDisplayNameAttribute.cs
- ObjectListCommand.cs
- PathHelper.cs
- DefaultPropertyAttribute.cs
- ConfigXmlComment.cs
- XsltQilFactory.cs
- DataContractSerializerSection.cs
- ClientSettings.cs
- EntityDataSourceWizardForm.cs
- FrameworkElementAutomationPeer.cs
- SamlAudienceRestrictionCondition.cs
- AspNetSynchronizationContext.cs
- XPathNodeHelper.cs
- SerialPinChanges.cs
- SetMemberBinder.cs
- DefaultEventAttribute.cs
- DataGridViewComboBoxEditingControl.cs
- CompositionDesigner.cs
- DataGridViewRowConverter.cs
- XmlChildEnumerator.cs
- AsyncPostBackErrorEventArgs.cs
- ChangeProcessor.cs
- DataGridColumnCollection.cs
- QilValidationVisitor.cs
- LoginNameDesigner.cs
- PartialToken.cs
- DataGridViewCellCancelEventArgs.cs
- XmlStrings.cs
- XmlSchemaAnnotation.cs
- ValidatorCompatibilityHelper.cs
- XmlDataCollection.cs
- MetadataConversionError.cs
- XomlCompilerParameters.cs
- FormViewInsertedEventArgs.cs
- ManualResetEvent.cs
- Int32Rect.cs
- XmlText.cs
- FixedDocumentSequencePaginator.cs
- Adorner.cs
- ParallelActivityDesigner.cs
- BitmapCodecInfo.cs
- CommonXSendMessage.cs
- AssemblyNameUtility.cs
- SemanticResultValue.cs
- SqlUdtInfo.cs
- SqlRecordBuffer.cs
- XmlQueryStaticData.cs
- RequestCachingSection.cs
- ChangeBlockUndoRecord.cs
- WindowsImpersonationContext.cs
- WebPartDisplayModeEventArgs.cs
- SamlAuthorityBinding.cs
- StringConverter.cs
- BaseHashHelper.cs
- ListViewItemSelectionChangedEvent.cs
- VBCodeProvider.cs
- UserValidatedEventArgs.cs
- PopupRoot.cs
- CustomError.cs
- ComplexTypeEmitter.cs
- DeclarativeCatalogPart.cs
- DeclaredTypeValidator.cs
- PageThemeBuildProvider.cs
- TypedTableGenerator.cs
- LinqDataSourceDeleteEventArgs.cs
- StringConcat.cs
- SpeakCompletedEventArgs.cs
- cache.cs
- CqlQuery.cs
- ProcessHost.cs
- X509Certificate.cs
- FaultDesigner.cs
- HTMLTextWriter.cs
- ManagedWndProcTracker.cs
- TextOptions.cs
- BindingManagerDataErrorEventArgs.cs
- ProjectionPruner.cs
- DataObjectCopyingEventArgs.cs
- TableLayoutPanel.cs
- ProviderBase.cs
- TemplatedWizardStep.cs
- EditingMode.cs
- PtsContext.cs
- SqlVisitor.cs
- WebPartConnectionsDisconnectVerb.cs
- ValueOfAction.cs
- BuildProviderCollection.cs