ServiceContractGenerator Класс
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Тип ServiceContractGenerator создает код контракта службы и конфигурации привязок из объектов описания ServiceEndpoint.
public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
- Наследование
-
ServiceContractGenerator
В следующем примере показано, как использовать объект ServiceContractGenerator для преобразования загруженных метаданных в код.
static void GenerateCSCodeForService(EndpointAddress metadataAddress, string outputFile)
{
MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);
mexClient.ResolveMetadataReferences = true;
MetadataSet metaDocs = mexClient.GetMetadata();
WsdlImporter importer = new WsdlImporter(metaDocs);
ServiceContractGenerator generator = new ServiceContractGenerator();
// Add our custom DCAnnotationSurrogate
// to write XSD annotations into the comments.
object dataContractImporter;
XsdDataContractImporter xsdDCImporter;
if (!importer.State.TryGetValue(typeof(XsdDataContractImporter), out dataContractImporter))
{
Console.WriteLine("Couldn't find the XsdDataContractImporter! Adding custom importer.");
xsdDCImporter = new XsdDataContractImporter();
xsdDCImporter.Options = new ImportOptions();
importer.State.Add(typeof(XsdDataContractImporter), xsdDCImporter);
}
else
{
xsdDCImporter = (XsdDataContractImporter)dataContractImporter;
if (xsdDCImporter.Options == null)
{
Console.WriteLine("There were no ImportOptions on the importer.");
xsdDCImporter.Options = new ImportOptions();
}
}
xsdDCImporter.Options.DataContractSurrogate = new DCAnnotationSurrogate();
// Uncomment the following code if you are going to do your work programmatically rather than add
// the WsdlDocumentationImporters through a configuration file.
/*
// The following code inserts a custom WsdlImporter without removing the other
// importers already in the collection.
System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlImportExtensions;
System.Collections.Generic.List<IWsdlImportExtension> newExts
= new System.Collections.Generic.List<IWsdlImportExtension>();
foreach (IWsdlImportExtension ext in exts)
{
Console.WriteLine("Default WSDL import extensions: {0}", ext.GetType().Name);
newExts.Add(ext);
}
newExts.Add(new WsdlDocumentationImporter());
System.Collections.Generic.IEnumerable<IPolicyImportExtension> polExts = importer.PolicyImportExtensions;
importer = new WsdlImporter(metaDocs, polExts, newExts);
*/
System.Collections.ObjectModel.Collection<ContractDescription> contracts
= importer.ImportAllContracts();
importer.ImportAllEndpoints();
foreach (ContractDescription contract in contracts)
{
generator.GenerateServiceContractType(contract);
}
if (generator.Errors.Count != 0)
throw new Exception("There were errors during code compilation.");
// Write the code dom
System.CodeDom.Compiler.CodeGeneratorOptions options
= new System.CodeDom.Compiler.CodeGeneratorOptions();
options.BracingStyle = "C";
System.CodeDom.Compiler.CodeDomProvider codeDomProvider
= System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
System.CodeDom.Compiler.IndentedTextWriter textWriter
= new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
codeDomProvider.GenerateCodeFromCompileUnit(
generator.TargetCompileUnit, textWriter, options
);
textWriter.Close();
}
Используйте объект ServiceContractGenerator для создания средств или для изменения процесса создания контракта по умолчанию с помощью объекта System.ServiceModel.Description.IWsdlImportExtension.
Service |
Инициализирует новый экземпляр класса ServiceContractGenerator с новым экземпляром CodeCompileUnit. |
Service |
Инициализирует новый экземпляр класса ServiceContractGenerator с указанным экземпляром CodeCompileUnit. |
Service |
Инициализирует новый экземпляр класса ServiceContractGenerator с указанным экземпляром CodeCompileUnit и указанным экземпляром Configuration. |
Service |
Инициализирует новый экземпляр класса ServiceContractGenerator с указанным экземпляром Configuration. |
Configuration |
Возвращает экземпляр Configuration, содержащий созданные конфигурации привязок. |
Errors |
Возвращает коллекцию объектов MetadataConversionError, созданных при создании кода контракта службы и конфигураций конечных точек. |
Namespace |
Возвращает сопоставление из пространств имен описания контракта управляемым пространствам имен, которые используются при создании кода. |
Options |
Возвращает или устанавливает параметры для создания кода контракта службы. |
Referenced |
Возвращает сопоставление между описаниями контракта и типами контракта, на которые имеются ссылки. |
Target |
Возвращает целевой объект CodeCompileUnit для создания кода контракта службы. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Generate |
Создает конфигурацию привязки для указанного экземпляра Binding. |
Generate |
Создает тип контракта службы из указанного экземпляра ContractDescription. |
Generate |
Создает тип контракта службы и конфигурацию конечной точки из указанного экземпляра ServiceEndpoint. |
Get |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
Get |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
Memberwise |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
To |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Продукт | Версии |
---|---|
.NET Framework | 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: