IServiceContractGenerationExtension Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет методы, вызываемые при создании контракта, которые могут использоваться, чтобы изменить создаваемый для контракта службы код.
public interface class IServiceContractGenerationExtension
public interface IServiceContractGenerationExtension
type IServiceContractGenerationExtension = interface
Public Interface IServiceContractGenerationExtension
Примеры
В следующем примере показано, как добавлять элемент IServiceContractGenerationExtension к свойству ContractDescription.Behaviors во время вызова 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));
}
}
}
}
В следующем примере кода показана реализация GenerateContract, где добавляются примечания к коду, созданному для контракта службы.
public void GenerateContract(ServiceContractGenerationContext context)
{
Console.WriteLine("In generate contract.");
context.ContractType.Comments.AddRange(Formatter.FormatComments(commentText));
}
В следующем примере кода показаны созданные примечания к контракту службы.
/// 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
Комментарии
Реализуйте интерфейс IServiceContractGenerationExtension в поведении контракта (тип System.ServiceModel.Description.IContractBehavior), чтобы обеспечить возможность изменять создаваемый код при компиляции контракта или конечной точки в код.
Как правило пользователь System.ServiceModel.Description.IWsdlImportExtension вставляет пользовательское поведение контракта в коллекцию ContractDescription.Behaviors при вызове ImportContract или ImportEndpoint.
Методы
GenerateContract(ServiceContractGenerationContext) |
Рекомендуется реализовать, чтобы изменить Code Document Object Model до процесса создания контракта. |