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
- WorkerRequest.cs
- SqlDataSourceView.cs
- CodeIdentifier.cs
- PostBackTrigger.cs
- SerializerWriterEventHandlers.cs
- GeometryModel3D.cs
- LinearKeyFrames.cs
- LocalizableAttribute.cs
- ListViewSelectEventArgs.cs
- Label.cs
- DrawingContextWalker.cs
- NativeMethods.cs
- LayoutTableCell.cs
- DefaultEventAttribute.cs
- Expander.cs
- FormViewUpdatedEventArgs.cs
- Quaternion.cs
- XmlSchemaAppInfo.cs
- XsltLoader.cs
- AssociationType.cs
- User.cs
- PostBackOptions.cs
- TaskFactory.cs
- PaintValueEventArgs.cs
- DataServiceHostFactory.cs
- SignedXmlDebugLog.cs
- DataPointer.cs
- SqlDataSourceTableQuery.cs
- AffineTransform3D.cs
- FixedFlowMap.cs
- SoapObjectReader.cs
- SymbolUsageManager.cs
- CounterSample.cs
- DependencyPropertyValueSerializer.cs
- DesignConnectionCollection.cs
- XmlWellformedWriterHelpers.cs
- DesignerSerializerAttribute.cs
- SqlCharStream.cs
- SqlWebEventProvider.cs
- ReachPrintTicketSerializerAsync.cs
- Link.cs
- ProxyManager.cs
- StrokeCollectionDefaultValueFactory.cs
- glyphs.cs
- PathGradientBrush.cs
- TypeExtensionSerializer.cs
- ProviderException.cs
- SamlAssertion.cs
- FigureParaClient.cs
- Tokenizer.cs
- EncodingTable.cs
- ExtractorMetadata.cs
- PointConverter.cs
- AtomContentProperty.cs
- FillErrorEventArgs.cs
- SQLResource.cs
- DirectoryNotFoundException.cs
- _BufferOffsetSize.cs
- StorageEntityContainerMapping.cs
- ListManagerBindingsCollection.cs
- SettingsPropertyValueCollection.cs
- DbDataRecord.cs
- X509CertificateStore.cs
- AssertSection.cs
- SupportsEventValidationAttribute.cs
- PackagePart.cs
- ConfigurationManagerInternalFactory.cs
- InplaceBitmapMetadataWriter.cs
- IODescriptionAttribute.cs
- TextRunCache.cs
- BufferBuilder.cs
- CharConverter.cs
- SectionInput.cs
- AnnotationResourceChangedEventArgs.cs
- ActivityTypeResolver.xaml.cs
- PermissionSet.cs
- TraceListeners.cs
- OrderByExpression.cs
- JsonUriDataContract.cs
- HttpRequestCacheValidator.cs
- SessionState.cs
- FunctionNode.cs
- MemberHolder.cs
- IDispatchConstantAttribute.cs
- ModifiableIteratorCollection.cs
- ICspAsymmetricAlgorithm.cs
- KoreanLunisolarCalendar.cs
- ManagementPath.cs
- Storyboard.cs
- MenuItemStyleCollection.cs
- TreeChangeInfo.cs
- SchemaSetCompiler.cs
- TextPenaltyModule.cs
- RegistryKey.cs
- StringAnimationBase.cs
- ValueUtilsSmi.cs
- XmlSiteMapProvider.cs
- _HTTPDateParse.cs
- Stack.cs
- ToolZone.cs