Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / CustomBindingElement.cs / 1 / CustomBindingElement.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Configuration { using System.Collections.Generic; using System.ServiceModel.Channels; using System.ComponentModel; using System.Configuration; using System.Globalization; public partial class CustomBindingElement : NamedServiceModelExtensionCollectionElement, ICollection , IBindingConfigurationElement { public CustomBindingElement() : this(null) {} public CustomBindingElement(string name) : base(ConfigurationStrings.BindingElementExtensions, name) {} [ConfigurationProperty(ConfigurationStrings.CloseTimeout, DefaultValue=ServiceDefaults.CloseTimeoutString)] [TypeConverter(typeof(TimeSpanOrInfiniteConverter))] [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)] public TimeSpan CloseTimeout { get { return (TimeSpan)base[ConfigurationStrings.CloseTimeout]; } set { base[ConfigurationStrings.CloseTimeout] = value; this.SetIsModified(); } } [ConfigurationProperty(ConfigurationStrings.OpenTimeout, DefaultValue=ServiceDefaults.OpenTimeoutString)] [TypeConverter(typeof(TimeSpanOrInfiniteConverter))] [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)] public TimeSpan OpenTimeout { get { return (TimeSpan)base[ConfigurationStrings.OpenTimeout]; } set { base[ConfigurationStrings.OpenTimeout] = value; this.SetIsModified(); } } [ConfigurationProperty(ConfigurationStrings.ReceiveTimeout, DefaultValue=ServiceDefaults.ReceiveTimeoutString)] [TypeConverter(typeof(TimeSpanOrInfiniteConverter))] [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)] public TimeSpan ReceiveTimeout { get { return (TimeSpan)base[ConfigurationStrings.ReceiveTimeout]; } set { base[ConfigurationStrings.ReceiveTimeout] = value; this.SetIsModified(); } } [ConfigurationProperty(ConfigurationStrings.SendTimeout, DefaultValue=ServiceDefaults.SendTimeoutString)] [TypeConverter(typeof(TimeSpanOrInfiniteConverter))] [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)] public TimeSpan SendTimeout { get { return (TimeSpan)base[ConfigurationStrings.SendTimeout]; } set { base[ConfigurationStrings.SendTimeout] = value; this.SetIsModified(); } } public override void Add(BindingElementExtensionElement element) { if (null == element) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("element"); } BindingElementExtensionElement existingElement = null; if (!this.CanAddEncodingElement(element, ref existingElement)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigMessageEncodingAlreadyInBinding, existingElement.ConfigurationElementName, existingElement.GetType().AssemblyQualifiedName))); } else if (!this.CanAddStreamUpgradeElement(element, ref existingElement)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigStreamUpgradeElementAlreadyInBinding, existingElement.ConfigurationElementName, existingElement.GetType().AssemblyQualifiedName))); } else if (!this.CanAddTransportElement(element, ref existingElement)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigTransportAlreadyInBinding, existingElement.ConfigurationElementName, existingElement.GetType().AssemblyQualifiedName))); } else { base.Add(element); } } public void ApplyConfiguration(Binding binding) { if (null == binding) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("binding"); } if (binding.GetType() != typeof(CustomBinding)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.ConfigInvalidTypeForBinding, typeof(CustomBinding).AssemblyQualifiedName, binding.GetType().AssemblyQualifiedName)); } binding.CloseTimeout = this.CloseTimeout; binding.OpenTimeout = this.OpenTimeout; binding.ReceiveTimeout = this.ReceiveTimeout; binding.SendTimeout = this.SendTimeout; this.OnApplyConfiguration(binding); } public override bool CanAdd(BindingElementExtensionElement element) { if (null == element) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("element"); } BindingElementExtensionElement existingElement = null; return !this.ContainsKey(element.GetType()) && this.CanAddEncodingElement(element, ref existingElement) && this.CanAddStreamUpgradeElement(element, ref existingElement) && this.CanAddTransportElement(element, ref existingElement); } bool CanAddEncodingElement(BindingElementExtensionElement element, ref BindingElementExtensionElement existingElement) { return this.CanAddExclusiveElement(typeof(MessageEncodingBindingElement), element.BindingElementType, ref existingElement); } bool CanAddExclusiveElement(Type exclusiveType, Type bindingElementType, ref BindingElementExtensionElement existingElement) { bool retval = true; if (exclusiveType.IsAssignableFrom(bindingElementType)) { foreach (BindingElementExtensionElement existing in this) { if (exclusiveType.IsAssignableFrom(existing.BindingElementType)) { retval = false; existingElement = existing; break; } } } return retval; } bool CanAddStreamUpgradeElement(BindingElementExtensionElement element, ref BindingElementExtensionElement existingElement) { return this.CanAddExclusiveElement(typeof(StreamUpgradeBindingElement), element.BindingElementType, ref existingElement); } bool CanAddTransportElement(BindingElementExtensionElement element, ref BindingElementExtensionElement existingElement) { return this.CanAddExclusiveElement(typeof(TransportBindingElement), element.BindingElementType, ref existingElement); } protected void OnApplyConfiguration(Binding binding) { CustomBinding theBinding = (CustomBinding) binding; foreach (BindingElementExtensionElement bindingConfig in this) { theBinding.Elements.Add(bindingConfig.CreateBindingElement()); } } } } // 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
- XmlQuerySequence.cs
- UrlAuthFailedErrorFormatter.cs
- FormsAuthentication.cs
- DeferredTextReference.cs
- LicenseProviderAttribute.cs
- InternalEnumValidator.cs
- HashCodeCombiner.cs
- WindowsImpersonationContext.cs
- IUnknownConstantAttribute.cs
- RightsManagementEncryptionTransform.cs
- TemplatedWizardStep.cs
- SystemIPInterfaceStatistics.cs
- BaseTemplateParser.cs
- DeclaredTypeValidator.cs
- SharedStatics.cs
- RowToParametersTransformer.cs
- WorkflowViewElement.cs
- ExpressionPrefixAttribute.cs
- ShaderEffect.cs
- ProtocolsConfigurationEntry.cs
- ModelFunction.cs
- BuilderElements.cs
- TextProperties.cs
- XmlHierarchyData.cs
- HttpListenerPrefixCollection.cs
- ViewManagerAttribute.cs
- GeometryDrawing.cs
- ConnectionStringsSection.cs
- ScrollPatternIdentifiers.cs
- _NtlmClient.cs
- ProgressChangedEventArgs.cs
- HostSecurityManager.cs
- StringFormat.cs
- ContainerFilterService.cs
- HttpVersion.cs
- ItemCollectionEditor.cs
- PcmConverter.cs
- UpdateCommand.cs
- TracePayload.cs
- AppDomain.cs
- ColumnMapTranslator.cs
- FieldTemplateFactory.cs
- QueryOptionExpression.cs
- ConfigXmlAttribute.cs
- OracleTimeSpan.cs
- TreeViewHitTestInfo.cs
- ImageResources.Designer.cs
- MasterPageBuildProvider.cs
- DesignerCapabilities.cs
- EnumerableRowCollection.cs
- XmlSchemaObject.cs
- ServiceNameElementCollection.cs
- DownloadProgressEventArgs.cs
- DataSourceControl.cs
- GACMembershipCondition.cs
- TextViewBase.cs
- QueryReaderSettings.cs
- DecimalKeyFrameCollection.cs
- CompositeFontFamily.cs
- UserControlAutomationPeer.cs
- AspCompat.cs
- OleDbPropertySetGuid.cs
- XmlSchemaObjectCollection.cs
- WebBrowserContainer.cs
- PathGradientBrush.cs
- TimeZone.cs
- WebPartConnectionCollection.cs
- GrammarBuilderDictation.cs
- CompositeControl.cs
- FocusWithinProperty.cs
- SlipBehavior.cs
- ListViewItem.cs
- MethodBuilderInstantiation.cs
- IPHostEntry.cs
- ByteStorage.cs
- ComponentSerializationService.cs
- ProvidersHelper.cs
- RegexGroupCollection.cs
- LayoutEvent.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- InputQueue.cs
- CaretElement.cs
- ColumnWidthChangedEvent.cs
- TextParagraphProperties.cs
- ObjectMaterializedEventArgs.cs
- StorageRoot.cs
- AdapterSwitches.cs
- JoinTreeSlot.cs
- ResourceProperty.cs
- AsymmetricSignatureDeformatter.cs
- GridItemCollection.cs
- HtmlElement.cs
- TextServicesProperty.cs
- XPathSingletonIterator.cs
- Regex.cs
- MimeReflector.cs
- SystemIPInterfaceProperties.cs
- MetadataItem.cs
- relpropertyhelper.cs
- XmlDownloadManager.cs