ServiceContractGenerator Classe

Definição

O ServiceContractGenerator tipo gera o código do contrato de serviço e as configurações de associação de objetos de descrição 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

Nome 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

Nome Description
Configuration

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

Errors

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

NamespaceMappings

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

Options

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

ReferencedTypes

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

TargetCompileUnit

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

Métodos

Nome Description
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 especificada Binding .

GenerateServiceContractType(ContractDescription)

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

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

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

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 Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a