161 lines
6.8 KiB
C#
161 lines
6.8 KiB
C#
|
//-----------------------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
namespace System.ServiceModel.Description
|
||
|
{
|
||
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.CodeDom;
|
||
|
using System.CodeDom.Compiler;
|
||
|
using System.ServiceModel;
|
||
|
|
||
|
public class OperationContractGenerationContext
|
||
|
{
|
||
|
readonly CodeMemberMethod syncMethod;
|
||
|
readonly CodeMemberMethod beginMethod;
|
||
|
readonly ServiceContractGenerationContext contract;
|
||
|
readonly CodeMemberMethod endMethod;
|
||
|
readonly OperationDescription operation;
|
||
|
readonly ServiceContractGenerator serviceContractGenerator;
|
||
|
readonly CodeTypeDeclaration declaringType;
|
||
|
readonly CodeMemberMethod taskMethod;
|
||
|
|
||
|
CodeTypeReference declaringTypeReference;
|
||
|
|
||
|
|
||
|
OperationContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ServiceContractGenerationContext contract, OperationDescription operation, CodeTypeDeclaration declaringType)
|
||
|
{
|
||
|
if (serviceContractGenerator == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("serviceContractGenerator"));
|
||
|
if (contract == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("contract"));
|
||
|
if (declaringType == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("declaringType"));
|
||
|
|
||
|
this.serviceContractGenerator = serviceContractGenerator;
|
||
|
this.contract = contract;
|
||
|
this.operation = operation;
|
||
|
this.declaringType = declaringType;
|
||
|
}
|
||
|
|
||
|
public OperationContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ServiceContractGenerationContext contract, OperationDescription operation, CodeTypeDeclaration declaringType, CodeMemberMethod syncMethod, CodeMemberMethod beginMethod, CodeMemberMethod endMethod, CodeMemberMethod taskMethod)
|
||
|
: this(serviceContractGenerator, contract, operation, declaringType)
|
||
|
{
|
||
|
if (syncMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("syncMethod"));
|
||
|
if (beginMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("beginMethod"));
|
||
|
if (endMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("endMethod"));
|
||
|
if (taskMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("taskMethod"));
|
||
|
|
||
|
this.syncMethod = syncMethod;
|
||
|
this.beginMethod = beginMethod;
|
||
|
this.endMethod = endMethod;
|
||
|
this.taskMethod = taskMethod;
|
||
|
}
|
||
|
|
||
|
public OperationContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ServiceContractGenerationContext contract, OperationDescription operation, CodeTypeDeclaration declaringType, CodeMemberMethod syncMethod, CodeMemberMethod beginMethod, CodeMemberMethod endMethod)
|
||
|
: this(serviceContractGenerator, contract, operation, declaringType)
|
||
|
{
|
||
|
if (syncMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("syncMethod"));
|
||
|
if (beginMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("beginMethod"));
|
||
|
if (endMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("endMethod"));
|
||
|
|
||
|
this.syncMethod = syncMethod;
|
||
|
this.beginMethod = beginMethod;
|
||
|
this.endMethod = endMethod;
|
||
|
}
|
||
|
|
||
|
public OperationContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ServiceContractGenerationContext contract, OperationDescription operation, CodeTypeDeclaration declaringType, CodeMemberMethod syncMethod, CodeMemberMethod taskMethod)
|
||
|
: this(serviceContractGenerator, contract, operation, declaringType)
|
||
|
{
|
||
|
if (syncMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("syncMethod"));
|
||
|
if (taskMethod == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("taskMethod"));
|
||
|
|
||
|
this.syncMethod = syncMethod;
|
||
|
this.taskMethod = taskMethod;
|
||
|
}
|
||
|
|
||
|
public OperationContractGenerationContext(ServiceContractGenerator serviceContractGenerator, ServiceContractGenerationContext contract, OperationDescription operation, CodeTypeDeclaration declaringType, CodeMemberMethod method)
|
||
|
: this(serviceContractGenerator, contract, operation, declaringType)
|
||
|
{
|
||
|
if (method == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("method"));
|
||
|
|
||
|
this.syncMethod = method;
|
||
|
this.beginMethod = null;
|
||
|
this.endMethod = null;
|
||
|
}
|
||
|
|
||
|
public ServiceContractGenerationContext Contract
|
||
|
{
|
||
|
get { return this.contract; }
|
||
|
}
|
||
|
|
||
|
public CodeTypeDeclaration DeclaringType
|
||
|
{
|
||
|
get { return this.declaringType; }
|
||
|
}
|
||
|
|
||
|
internal CodeTypeReference DeclaringTypeReference
|
||
|
{
|
||
|
get { return this.declaringTypeReference; }
|
||
|
set { this.declaringTypeReference = value; }
|
||
|
}
|
||
|
|
||
|
public CodeMemberMethod BeginMethod
|
||
|
{
|
||
|
get { return this.beginMethod; }
|
||
|
}
|
||
|
|
||
|
public CodeMemberMethod EndMethod
|
||
|
{
|
||
|
get { return this.endMethod; }
|
||
|
}
|
||
|
|
||
|
public CodeMemberMethod TaskMethod
|
||
|
{
|
||
|
get { return this.taskMethod; }
|
||
|
}
|
||
|
|
||
|
public CodeMemberMethod SyncMethod
|
||
|
{
|
||
|
get { return this.syncMethod; }
|
||
|
}
|
||
|
|
||
|
public bool IsAsync
|
||
|
{
|
||
|
get { return this.beginMethod != null; }
|
||
|
}
|
||
|
|
||
|
public bool IsTask
|
||
|
{
|
||
|
get { return this.taskMethod != null; }
|
||
|
}
|
||
|
|
||
|
// true if this operation was declared somewhere up the hierarchy (rather than at this level)
|
||
|
internal bool IsInherited
|
||
|
{
|
||
|
get { return !(this.declaringType == contract.ContractType || this.declaringType == contract.DuplexCallbackType); }
|
||
|
}
|
||
|
|
||
|
public OperationDescription Operation
|
||
|
{
|
||
|
get { return this.operation; }
|
||
|
}
|
||
|
|
||
|
public ServiceContractGenerator ServiceContractGenerator
|
||
|
{
|
||
|
get { return this.serviceContractGenerator; }
|
||
|
}
|
||
|
}
|
||
|
}
|