Поделиться через


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 в имеют соответствующие свойства в модели программирования WCF для OperationContractAttribute, например 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)

Применяется к