OperationDescription 類別

定義

表示合約作業的描述,提供組成作業的訊息的描述。

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

範例

下列範例會使用 OperationDescription 類別的 屬性所傳回之集合傳 Operations 回的 ContractDescription 。 此程式碼會逐一查看端點的集合,並列印每個端點名稱以及端點中每個作業的名稱。

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 許多屬性在 上的 OperationContractAttribute WCF 程式設計模型中都有對應的屬性,例如 。 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)

適用於