IOperationContractGenerationExtension Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет методы, вызываемые при создании контракта, которые могут использоваться, чтобы изменить создаваемый для операции код.
public interface class IOperationContractGenerationExtension
public interface IOperationContractGenerationExtension
type IOperationContractGenerationExtension = interface
Public Interface IOperationContractGenerationExtension
Примеры
В следующем примере кода показана реализация метода GenerateOperation, который добавляет строку к разделу комментариев операции, используя пространство имен System.CodeDom.
В следующем примере кода показано, как поведение операции, реализующее IOperationContractGenerationExtension, вставляется в коллекцию OperationDescription.Behaviors при вызове IWsdlImportExtension.ImportContract.
public void ImportContract(WsdlImporter importer, WsdlContractConversionContext context)
{
Console.Write("ImportContract");
// Contract Documentation
if (context.WsdlPortType.Documentation != null)
{
context.Contract.Behaviors.Add(new WsdlDocumentationImporter(context.WsdlPortType.Documentation));
}
// Operation Documentation
foreach (Operation operation in context.WsdlPortType.Operations)
{
if (operation.Documentation != null)
{
OperationDescription operationDescription = context.Contract.Operations.Find(operation.Name);
if (operationDescription != null)
{
operationDescription.Behaviors.Add(new WsdlDocumentationImporter(operation.Documentation));
}
}
}
}
В заключение, в следующем примере кода показана операция, созданная в Visual Basic и в C#.
/// From WSDL Documentation:
///
/// <summary>The string for the Name data member.</summary>
///
[System.Runtime.Serialization.DataMemberAttribute()]
public string Name
{
get
{
return this.NameField;
}
set
{
this.NameField = value;
}
}
'''From WSDL Documentation:
'''
'''<summary>The string for the Name data member.</summary>
'''
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Name() As String
Get
Return Me.NameField
End Get
Set
Me.NameField = value
End Set
End Property
Комментарии
Реализуйте интерфейс IOperationContractGenerationExtension в поведении операции (тип System.ServiceModel.Description.IOperationBehavior), чтобы обеспечить возможность изменять создаваемый код при компиляции контракта или конечной точки в код. Как правило пользовательское расширение System.ServiceModel.Description.IWsdlImportExtension вставляет пользовательское поведение операции в коллекцию OperationDescription.Behaviors при вызове IWsdlImportExtension.ImportContract или IWsdlImportExtension.ImportEndpoint.
Методы
GenerateOperation(OperationContractGenerationContext) |
Рекомендуется реализовать, чтобы изменить Code Document Object Model до процесса создания контракта. |