OperationDescription 类

定义

表示协定操作的说明,该协定操作可提供组成操作的消息的说明。

public ref class OperationDescription
public class OperationDescription
type OperationDescription = class
Public Class OperationDescription
继承
OperationDescription

示例

以下示例使用 OperationDescription 类的 属性返回的 集合中返回 OperationsContractDescription 。 该代码循环访问终结点集合,并输出每个终结点的名称以及终结点中的每个操作的名称。

private void PrintDescription(ServiceHost sh)
{
    // Declare variables.
    int i, j, k, l, c;
    ServiceDescription servDesc = sh.Description;
    OperationDescription opDesc;
    ContractDescription contractDesc;
    MessageDescription methDesc;
    MessageBodyDescription mBodyDesc;
    MessagePartDescription partDesc;
    IServiceBehavior servBeh;
    ServiceEndpoint servEP;

    // Print the behaviors of the service.
    Console.WriteLine("Behaviors:");
    for (c = 0; c < servDesc.Behaviors.Count; c++)
    {
        servBeh = servDesc.Behaviors[c];
        Console.WriteLine("\t{0}", servBeh.ToString());
    }

    // Print the endpoint descriptions of the service.
    Console.WriteLine("Endpoints");
    for (i = 0; i < servDesc.Endpoints.Count; i++)
    {
        // Print the endpoint names.
        servEP = servDesc.Endpoints[i];
        Console.WriteLine("\tName: {0}", servEP.Name);
        contractDesc = servEP.Contract;

        Console.WriteLine("\tOperations:");
        for (j = 0; j < contractDesc.Operations.Count; j++)
        {
            // Print the operation names.
            opDesc = servEP.Contract.Operations[j];
            Console.WriteLine("\t\t{0}", opDesc.Name);
            Console.WriteLine("\t\tActions:");
            for (k  = 0; k < opDesc.Messages.Count; k++)
            {
                // Print the message action.
                methDesc = opDesc.Messages[k];
                Console.WriteLine("\t\t\tAction:{0}", methDesc.Action);

                // Check for the existence of a body, then the body description.
                mBodyDesc = methDesc.Body;
                if (mBodyDesc.Parts.Count > 0)
                {
                    for (l = 0; l < methDesc.Body.Parts.Count; l++)
                    {
                        partDesc = methDesc.Body.Parts[l];
                        Console.WriteLine("\t\t\t\t{0}",partDesc.Name);
                    }
                }
            }
        }
    }
}
Private Sub PrintDescription(ByVal sh As ServiceHost) 
    ' Declare variables.
    Dim i, j, k, l, c As Integer
    Dim servDesc As ServiceDescription = sh.Description
    Dim opDesc As OperationDescription
    Dim contractDesc As ContractDescription
    Dim methDesc As MessageDescription
    Dim mBodyDesc As MessageBodyDescription
    Dim partDesc As MessagePartDescription
    Dim servBeh As IServiceBehavior
    Dim servEP As ServiceEndpoint
    
    ' Print the behaviors of the service.
    Console.WriteLine("Behaviors:")
    For c = 0 To servDesc.Behaviors.Count-1
        servBeh = servDesc.Behaviors(c)
        Console.WriteLine(vbTab + "{0}", servBeh)
    Next c
    
    ' Print the endpoint descriptions of the service.
    Console.WriteLine("Endpoints")
    For i = 0 To servDesc.Endpoints.Count-1
        ' Print the endpoint names.
        servEP = servDesc.Endpoints(i)
        Console.WriteLine(vbTab + "Name: {0}", servEP.Name)
        contractDesc = servEP.Contract
        
        Console.WriteLine(vbTab + "Operations:")
        For j = 0 To contractDesc.Operations.Count-1
            ' Print operation names.
            opDesc = servEP.Contract.Operations(j)
            Console.WriteLine(vbTab + vbTab + "{0}", opDesc.Name)
            Console.WriteLine(vbTab + vbTab + "Actions:")
            For k = 0 To opDesc.Messages.Count-1
                ' Print the message action. 
                methDesc = opDesc.Messages(k)
                Console.WriteLine(vbTab + vbTab + vbTab + _
                  "Action:{0}", methDesc.Action)
                
                ' Check for the existence of a body, then the body description.
                mBodyDesc = methDesc.Body
                If mBodyDesc.Parts.Count > 0 Then
                    For l = 0 To methDesc.Body.Parts.Count-1
                        partDesc = methDesc.Body.Parts(l)
                        Console.WriteLine(vbTab + vbTab + _
                        vbTab + vbTab + "{0}", partDesc.Name)
                    Next l
                End If
            Next k
        Next j
    Next i

End Sub

注解

Windows Communication Foundation (WCF) 协定是指定终结点与外部世界通信的操作集合。 每个操作都是一次消息交换。 例如,构成请求/回复消息交换的请求消息以及与该请求消息关联的回复消息。

ContractDescription 对象用于描述协定及其操作。 在 ContractDescription 内,每个协定操作都具有相应的 OperationDescription,它会对操作的各个方面进行描述,例如操作是单向的还是请求/回复。 每个 OperationDescription 还描述使用 对象集合 MessageDescription 构成操作的消息。 ContractDescription 包含有可利用编程模型定义协定的接口的引用。 此接口带有 ServiceContractAttribute 标记,该接口的与终结点操作相对应的方法带有 OperationContractAttribute 标记。

上的 OperationDescription 许多属性在 上的 OperationContractAttributeWCF 编程模型中具有相应的属性, IsTerminating例如 。

构造函数

OperationDescription(String, ContractDescription)

使用指定的名称和协定说明初始化 OperationDescription 类的新实例。

属性

BeginMethod

获取或设置操作的开始方法。

Behaviors

获取或设置与此操作关联的操作行为。

DeclaringContract

获取或设置该操作所属的协定。

EndMethod

获取或设置操作的结束方法。

Faults

获取与操作说明关联的错误的说明。

HasProtectionLevel

获取指示操作是否已设置保护级别的值。

IsInitiating

获取或设置一个值,该值指示方法是否实现可在服务器上启动会话(如果存在会话)的操作。

IsOneWay

获取或设置一个值,该值指示操作是否返回答复消息。

IsTerminating

获取或设置一个值,该值指示服务操作在发送答复消息(如果存在)后,是否会导致服务器关闭会话。

KnownTypes

获取与操作说明关联的已知类型。

Messages

获取或设置组成操作的消息的说明。

Name

获取或设置操作说明的名称。

OperationBehaviors

获取操作的行为集。

ProtectionLevel

获取或设置操作的保护级别。

SyncMethod

获取或设置操作说明的服务同步方法。

TaskMethod

获取或设置用于任务操作的方法。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ShouldSerializeProtectionLevel()

返回一个值,该值指示 ProtectionLevel 属性是否已更改,不再是默认值且应对其进行序列化。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于