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
- Matrix.cs
- _AcceptOverlappedAsyncResult.cs
- XmlWellformedWriter.cs
- TableCellCollection.cs
- WebPartMinimizeVerb.cs
- CssStyleCollection.cs
- ContourSegment.cs
- BaseTemplateCodeDomTreeGenerator.cs
- DocobjHost.cs
- SerializerDescriptor.cs
- EditingCommands.cs
- RegexWorker.cs
- CachedRequestParams.cs
- IOThreadScheduler.cs
- BrushValueSerializer.cs
- EventListenerClientSide.cs
- UnsafeNativeMethods.cs
- Underline.cs
- SqlFacetAttribute.cs
- DataGridItemAutomationPeer.cs
- WorkflowPersistenceService.cs
- RichTextBox.cs
- NetworkCredential.cs
- CommonObjectSecurity.cs
- MetabaseReader.cs
- XmlWriter.cs
- MouseWheelEventArgs.cs
- EventManager.cs
- HashMembershipCondition.cs
- StandardOleMarshalObject.cs
- CrossContextChannel.cs
- RichTextBoxAutomationPeer.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- WorkflowServiceHostFactory.cs
- ImageDrawing.cs
- SchemaElementDecl.cs
- JumpPath.cs
- ButtonDesigner.cs
- DirectoryNotFoundException.cs
- CodeMemberMethod.cs
- ClientClassGenerator.cs
- TemplateKey.cs
- HttpInputStream.cs
- DateTimeParse.cs
- PointF.cs
- OptimalTextSource.cs
- RoutedEventHandlerInfo.cs
- ParameterCollectionEditorForm.cs
- ResourceAssociationSet.cs
- NativeObjectSecurity.cs
- InvalidComObjectException.cs
- XpsDigitalSignature.cs
- CheckBoxPopupAdapter.cs
- DoubleStorage.cs
- MethodAccessException.cs
- StringResourceManager.cs
- WebScriptClientGenerator.cs
- TextParagraphView.cs
- CompilationSection.cs
- AssemblyCollection.cs
- TabRenderer.cs
- XmlUnspecifiedAttribute.cs
- AsmxEndpointPickerExtension.cs
- EnterpriseServicesHelper.cs
- VisemeEventArgs.cs
- KeyEvent.cs
- BaseDataBoundControl.cs
- BlurEffect.cs
- SkewTransform.cs
- WebPartTransformerCollection.cs
- TextSpanModifier.cs
- NonSerializedAttribute.cs
- XmlSchemaGroup.cs
- ListenerConstants.cs
- FontResourceCache.cs
- ToolStripDesignerAvailabilityAttribute.cs
- WindowsRebar.cs
- Int16Animation.cs
- RenderOptions.cs
- SingleObjectCollection.cs
- PermissionSetTriple.cs
- SystemIPv4InterfaceProperties.cs
- OrderByQueryOptionExpression.cs
- TextEditorLists.cs
- PropertyMappingExceptionEventArgs.cs
- lengthconverter.cs
- BinaryParser.cs
- ValueType.cs
- FontStyles.cs
- CheckBox.cs
- XmlDeclaration.cs
- StylusPlugInCollection.cs
- TriggerBase.cs
- VoiceObjectToken.cs
- SubstitutionResponseElement.cs
- RequestCachePolicy.cs
- PtsContext.cs
- SequenceDesignerAccessibleObject.cs
- XmlIlGenerator.cs
- Property.cs