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


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 в модели 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)

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