Compartilhar via


ServiceContractGenerator Classe

Definição

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

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

Exemplos

O exemplo a seguir mostra o uso de um ServiceContractGenerator para converter metadados baixados 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();
  }

Comentários

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

Construtores

ServiceContractGenerator()

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

ServiceContractGenerator(CodeCompileUnit)

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

ServiceContractGenerator(CodeCompileUnit, Configuration)

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

ServiceContractGenerator(Configuration)

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

Propriedades

Configuration

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

Errors

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

NamespaceMappings

Obtém um mapeamento de namespaces de descrição do contrato para namespaces gerenciados que é usado ao gerar código.

Options

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

ReferencedTypes

Obtém um mapeamento de descrições de contrato para tipos de contrato referenciados.

TargetCompileUnit

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

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

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

GenerateServiceContractType(ContractDescription)

Gera um tipo de contrato de serviço com base na instância de ContractDescription especificada.

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Gera um tipo de contrato de serviço e uma configuração de ponto de extremidade da instância de ServiceEndpoint especificada.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a