Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Description / ContractDescription.cs / 1 / ContractDescription.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Description { using System; using System.Collections.Generic; using System.Globalization; using System.Reflection; using System.Transactions; using System.Runtime.Serialization; using System.ServiceModel.Channels; using System.Collections.ObjectModel; using System.Diagnostics; using System.Net.Security; using System.ServiceModel.Security; [DebuggerDisplay("Name={name}, Namespace={ns}, ContractType={contractType}")] public class ContractDescription { Type callbackContractType; string configurationName; Type contractType; XmlName name; string ns; OperationDescriptionCollection operations; SessionMode sessionMode; KeyedByTypeCollectionbehaviors = new KeyedByTypeCollection (); ProtectionLevel protectionLevel; bool hasProtectionLevel; public ContractDescription(string name) : this(name, null) { } public ContractDescription(string name, string ns) { // the property setter validates given value this.Name = name; if (!string.IsNullOrEmpty(ns)) NamingHelper.CheckUriParameter(ns, "ns"); this.operations = new OperationDescriptionCollection(); this.ns = ns ?? NamingHelper.DefaultNamespace; // ns can be "" } internal string CodeName { get { return this.name.DecodedName; } } public string ConfigurationName { get { return this.configurationName; } set { this.configurationName = value; } } public Type ContractType { get { return this.contractType; } set { this.contractType = value; } } public Type CallbackContractType { get { return this.callbackContractType; } set { this.callbackContractType = value; } } public string Name { get { return this.name.EncodedName; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } if (value.Length == 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new ArgumentOutOfRangeException("value", SR.GetString(SR.SFxContractDescriptionNameCannotBeEmpty))); } this.name = new XmlName(value, true /*isEncoded*/); } } public string Namespace { get { return this.ns; } set { if (!string.IsNullOrEmpty(value)) NamingHelper.CheckUriProperty(value, "Namespace"); this.ns = value; } } public OperationDescriptionCollection Operations { get { return this.operations; } } public ProtectionLevel ProtectionLevel { get { return this.protectionLevel; } set { if (!ProtectionLevelHelper.IsDefined(value)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); this.protectionLevel = value; this.hasProtectionLevel = true; } } public bool HasProtectionLevel { get { return this.hasProtectionLevel; } } public SessionMode SessionMode { get { return this.sessionMode; } set { if (!SessionModeHelper.IsDefined(value)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value")); } this.sessionMode = value; } } public KeyedByTypeCollection Behaviors { get { return this.behaviors; } } public static ContractDescription GetContract(Type contractType) { if (contractType == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("contractType"); TypeLoader typeLoader = new TypeLoader(); return typeLoader.LoadContractDescription(contractType); } public static ContractDescription GetContract(Type contractType, Type serviceType) { if (contractType == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("contractType"); if (serviceType == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceType"); TypeLoader typeLoader = new TypeLoader(); ContractDescription description = typeLoader.LoadContractDescription(contractType, serviceType); return description; } public static ContractDescription GetContract(Type contractType, object serviceImplementation) { if (contractType == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("contractType"); if (serviceImplementation == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceImplementation"); TypeLoader typeLoader = new TypeLoader(); Type serviceType = serviceImplementation.GetType(); ContractDescription description = typeLoader.LoadContractDescription(contractType, serviceType, serviceImplementation); return description; } public Collection GetInheritedContracts() { Collection result = new Collection (); for (int i = 0; i < Operations.Count; i++) { OperationDescription od = Operations[i]; if (od.DeclaringContract != this) { ContractDescription inheritedContract = od.DeclaringContract; if (!result.Contains(inheritedContract)) { result.Add(inheritedContract); } } } return result; } internal void EnsureInvariants() { if (string.IsNullOrEmpty(this.Name)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.AChannelServiceEndpointSContractSNameIsNull0))); } if (this.Namespace == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.AChannelServiceEndpointSContractSNamespace0))); } if (this.Operations.Count == 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.SFxContractHasZeroOperations, this.Name))); } bool thereIsAtLeastOneInitiatingOperation = false; for (int i = 0; i < this.Operations.Count; i++) { OperationDescription operationDescription = this.Operations[i]; operationDescription.EnsureInvariants(); if (operationDescription.IsInitiating) thereIsAtLeastOneInitiatingOperation = true; if ((!operationDescription.IsInitiating || operationDescription.IsTerminating) && (this.SessionMode != SessionMode.Required)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.ContractIsNotSelfConsistentItHasOneOrMore2, this.Name))); } } if (!thereIsAtLeastOneInitiatingOperation) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.SFxContractHasZeroInitiatingOperations, this.Name))); } } internal bool IsDuplex() { for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AutomationPropertyInfo.cs
- MetadataPropertyvalue.cs
- ControlBuilder.cs
- TCPListener.cs
- CustomErrorsSection.cs
- DateTime.cs
- OLEDB_Enum.cs
- DiffuseMaterial.cs
- ToolStripContainerActionList.cs
- ResourceReferenceExpressionConverter.cs
- SettingsSection.cs
- HashRepartitionEnumerator.cs
- CapabilitiesUse.cs
- EntityDataSourceState.cs
- ConfigXmlText.cs
- CriticalFileToken.cs
- MenuDesigner.cs
- CollectionExtensions.cs
- DbConnectionClosed.cs
- DecoderReplacementFallback.cs
- DataGridViewImageColumn.cs
- GeneralTransformGroup.cs
- ContainerControlDesigner.cs
- ProcessInfo.cs
- SchemaReference.cs
- ZipIOModeEnforcingStream.cs
- EditorPartChrome.cs
- MessageSecurityTokenVersion.cs
- AssemblyCache.cs
- ColorAnimationUsingKeyFrames.cs
- ExpressionConverter.cs
- TypeGeneratedEventArgs.cs
- BufferModesCollection.cs
- XmlAttribute.cs
- StackBuilderSink.cs
- ColorInterpolationModeValidation.cs
- RedirectionProxy.cs
- StickyNoteAnnotations.cs
- DataGridViewRowStateChangedEventArgs.cs
- CryptoProvider.cs
- FormDesigner.cs
- SystemException.cs
- _TransmitFileOverlappedAsyncResult.cs
- XamlFilter.cs
- FormattedText.cs
- SQLStringStorage.cs
- WebConfigurationFileMap.cs
- EntryWrittenEventArgs.cs
- XmlSchemaImport.cs
- XmlSchemaAll.cs
- DeflateEmulationStream.cs
- TextServicesDisplayAttribute.cs
- HtmlButton.cs
- PageParser.cs
- WebPartCloseVerb.cs
- InvalidCommandTreeException.cs
- GeometryCombineModeValidation.cs
- Splitter.cs
- StyleXamlTreeBuilder.cs
- Membership.cs
- Object.cs
- TogglePattern.cs
- EncryptedPackage.cs
- WhiteSpaceTrimStringConverter.cs
- SourceFilter.cs
- PropertyTab.cs
- ObjectConverter.cs
- xmlformatgeneratorstatics.cs
- CursorEditor.cs
- LambdaValue.cs
- XPathDescendantIterator.cs
- BindingCompleteEventArgs.cs
- ValueUtilsSmi.cs
- NativeMethods.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- HighlightComponent.cs
- SplitterDesigner.cs
- TemplateControl.cs
- XmlSerializerFactory.cs
- CustomSignedXml.cs
- QuestionEventArgs.cs
- LinqExpressionNormalizer.cs
- ExceptionHandlers.cs
- DoWorkEventArgs.cs
- PaperSource.cs
- Help.cs
- MultipleViewProviderWrapper.cs
- PrintPreviewGraphics.cs
- XmlSchemaSimpleType.cs
- SerializationEventsCache.cs
- DataBindingCollection.cs
- Missing.cs
- EtwTrace.cs
- GridViewUpdatedEventArgs.cs
- JsonObjectDataContract.cs
- MediaPlayer.cs
- ServiceDescriptionReflector.cs
- XmlNode.cs
- SmiEventStream.cs
- FilteredDataSetHelper.cs