//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Description { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.CodeDom; using System.CodeDom.Compiler; public class ServiceContractGenerationContext { readonly ServiceContractGenerator serviceContractGenerator; readonly ContractDescription contract; readonly CodeTypeDeclaration contractType; readonly CodeTypeDeclaration duplexCallbackType; readonly Collection operations = new Collection(); CodeNamespace codeNamespace; CodeTypeDeclaration channelType; CodeTypeReference channelTypeReference; CodeTypeDeclaration clientType; CodeTypeReference clientTypeReference; CodeTypeReference contractTypeReference; CodeTypeReference duplexCallbackTypeReference; ServiceContractGenerator.CodeTypeFactory typeFactory; public ServiceContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ContractDescription contract, CodeTypeDeclaration contractType) { if (serviceContractGenerator == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("serviceContractGenerator")); if (contract == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("contract")); if (contractType == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("contractType")); this.serviceContractGenerator = serviceContractGenerator; this.contract = contract; this.contractType = contractType; } public ServiceContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ContractDescription contract, CodeTypeDeclaration contractType, CodeTypeDeclaration duplexCallbackType) : this(serviceContractGenerator, contract, contractType) { this.duplexCallbackType = duplexCallbackType; } internal CodeTypeDeclaration ChannelType { get { return this.channelType; } set { this.channelType = value; } } internal CodeTypeReference ChannelTypeReference { get { return this.channelTypeReference; } set { this.channelTypeReference = value; } } internal CodeTypeDeclaration ClientType { get { return this.clientType; } set { this.clientType = value; } } internal CodeTypeReference ClientTypeReference { get { return this.clientTypeReference; } set { this.clientTypeReference = value; } } public ContractDescription Contract { get { return this.contract; } } public CodeTypeDeclaration ContractType { get { return this.contractType; } } internal CodeTypeReference ContractTypeReference { get { return this.contractTypeReference; } set { this.contractTypeReference = value; } } public CodeTypeDeclaration DuplexCallbackType { get { return this.duplexCallbackType; } } internal CodeTypeReference DuplexCallbackTypeReference { get { return this.duplexCallbackTypeReference; } set { this.duplexCallbackTypeReference = value; } } internal CodeNamespace Namespace { get { return this.codeNamespace; } set { this.codeNamespace = value; } } public Collection Operations { get { return this.operations; } } public ServiceContractGenerator ServiceContractGenerator { get { return this.serviceContractGenerator; } } internal ServiceContractGenerator.CodeTypeFactory TypeFactory { get { return this.typeFactory; } set { this.typeFactory = value; } } } }