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
- AddInDeploymentState.cs
- PropertyGrid.cs
- RequestBringIntoViewEventArgs.cs
- TextSpan.cs
- ServicePrincipalNameElement.cs
- LiteralTextContainerControlBuilder.cs
- VSWCFServiceContractGenerator.cs
- ExtendedPropertyDescriptor.cs
- CodeIdentifier.cs
- SamlSecurityToken.cs
- PeerToPeerException.cs
- diagnosticsswitches.cs
- TreeViewBindingsEditor.cs
- Rules.cs
- SuppressedPackageProperties.cs
- Translator.cs
- RunClient.cs
- OutOfProcStateClientManager.cs
- DocumentSequence.cs
- CompModSwitches.cs
- messageonlyhwndwrapper.cs
- FreezableCollection.cs
- GeometryModel3D.cs
- RawUIStateInputReport.cs
- TemplateXamlParser.cs
- SqlNamer.cs
- SHA1.cs
- DecoratedNameAttribute.cs
- TableItemPatternIdentifiers.cs
- KnownColorTable.cs
- DispatcherHooks.cs
- Solver.cs
- FixedBufferAttribute.cs
- InfoCardUIAgent.cs
- IPAddressCollection.cs
- VisualTreeHelper.cs
- FixedDocumentPaginator.cs
- IOThreadTimer.cs
- DataReaderContainer.cs
- ToolBar.cs
- TransactedReceiveScope.cs
- RegisteredExpandoAttribute.cs
- Border.cs
- InvalidWMPVersionException.cs
- WebPartCancelEventArgs.cs
- WebCategoryAttribute.cs
- ConstNode.cs
- TdsParserHelperClasses.cs
- ApplicationDirectory.cs
- ConfigurationValidatorBase.cs
- MouseGestureValueSerializer.cs
- XmlWriter.cs
- ComContractElement.cs
- LifetimeServices.cs
- HotSpot.cs
- WpfWebRequestHelper.cs
- ThreadStartException.cs
- Set.cs
- Substitution.cs
- TextOptions.cs
- ApplicationCommands.cs
- CheckBoxAutomationPeer.cs
- ParameterDataSourceExpression.cs
- ClientScriptManager.cs
- ModelVisual3D.cs
- FixedTextPointer.cs
- SqlBuilder.cs
- DesignerActionListCollection.cs
- ClientTargetCollection.cs
- _NegotiateClient.cs
- MimeObjectFactory.cs
- PointAnimation.cs
- SmtpClient.cs
- SignedPkcs7.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- _SslSessionsCache.cs
- PointKeyFrameCollection.cs
- SafeUserTokenHandle.cs
- DataBindingValueUIHandler.cs
- XmlNodeChangedEventArgs.cs
- AssemblyAttributesGoHere.cs
- ThreadAbortException.cs
- XmlWrappingWriter.cs
- HostedImpersonationContext.cs
- CachingHintValidation.cs
- PersistenceContextEnlistment.cs
- HandlerFactoryCache.cs
- BCLDebug.cs
- CallSite.cs
- GraphicsPath.cs
- ReflectEventDescriptor.cs
- Matrix3D.cs
- WindowAutomationPeer.cs
- WSHttpBindingBase.cs
- ListViewContainer.cs
- CompositeCollectionView.cs
- CodeAccessPermission.cs
- ParserContext.cs
- ProgressPage.cs
- MultipleViewPattern.cs