ServiceContractGenerator Classe

Definição

O ServiceContractGenerator tipo gera código de contrato de serviço e configurações de ligação a partir de ServiceEndpoint objetos de descrição.

public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
Herança
ServiceContractGenerator

Exemplos

O exemplo seguinte mostra o uso de a ServiceContractGenerator para converter metadados descarregados em código.

  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();
  }

Observações

Use o ServiceContractGenerator para criar ferramentas ou para modificar o processo padrão de geração de contratos usando um System.ServiceModel.Description.IWsdlImportExtension.

Construtores

Name Description
ServiceContractGenerator()

Inicializa uma nova instância da ServiceContractGenerator classe com uma nova CodeCompileUnit instância.

ServiceContractGenerator(CodeCompileUnit, Configuration)

Inicializa uma nova instância da ServiceContractGenerator classe com a instância especificada CodeCompileUnit e a instância especificada Configuration .

ServiceContractGenerator(CodeCompileUnit)

Inicializa uma nova instância da ServiceContractGenerator classe com a instância especificada CodeCompileUnit .

ServiceContractGenerator(Configuration)

Inicializa uma nova instância da ServiceContractGenerator classe com a instância especificada Configuration .

Propriedades

Name Description
Configuration

Obtém a Configuration instância que contém as configurações de ligação geradas.

Errors

Obtém uma coleção de MetadataConversionError objetos gerados ao gerar o código de contrato de serviço e configurações de endpoints.

NamespaceMappings

Obtém um mapeamento dos namespaces de descrição do contrato para namespaces geridos, que é usado na geração de código.

Options

Obtém ou define opções para gerar código de contrato de serviço.

ReferencedTypes

Recebe um mapeamento das descrições dos contratos para os tipos de contratos referenciados.

TargetCompileUnit

Obtém o objeto alvo CodeCompileUnit para gerar o código do contrato de serviço.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GenerateBinding(Binding, String, String)

Gera uma configuração de binding para a instância especificada Binding .

GenerateServiceContractType(ContractDescription)

Gera um tipo de contrato de serviço a partir da instância especificada ContractDescription .

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Gera um tipo de contrato de serviço e uma configuração de endpoint a partir da instância especificada ServiceEndpoint .

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a