Compartir a través de


ServiceContractGenerator Clase

Definición

El tipo ServiceContractGenerator genera un código de contrato de servicio y las configuraciones de enlace a partir de los objetos de descripción ServiceEndpoint.

public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
Herencia
ServiceContractGenerator

Ejemplos

El ejemplo siguiente muestra el uso de ServiceContractGenerator para convertir los metadatos descargados en el 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();
  }

Comentarios

Utilice ServiceContractGenerator para crear las herramientas o modificar el proceso de generación de contrato predeterminado mediante System.ServiceModel.Description.IWsdlImportExtension.

Constructores

ServiceContractGenerator()

Inicializa una nueva instancia de la clase ServiceContractGenerator con una nueva instancia CodeCompileUnit.

ServiceContractGenerator(CodeCompileUnit)

Inicializa una nueva instancia de la clase ServiceContractGenerator con la instancia de CodeCompileUnit especificada.

ServiceContractGenerator(CodeCompileUnit, Configuration)

Inicializa un nueva instancia de la clase ServiceContractGenerator con las instancias especificadas CodeCompileUnit y Configuration.

ServiceContractGenerator(Configuration)

Inicializa una nueva instancia de la clase ServiceContractGenerator con la instancia de Configuration especificada.

Propiedades

Configuration

Obtiene la instancia Configuration que contiene las configuraciones de enlace generadas.

Errors

Obtiene una colección de los objetos MetadataConversionError creados al generar el código de contrato de servicio y las configuraciones de extremo.

NamespaceMappings

Obtiene la asignación de los espacios de nombres de la descripción de contrato a los espacios de nombres administrados que se utilizan al generar el código.

Options

Obtiene o establece las opciones para generar el código de contrato de servicio.

ReferencedTypes

Obtiene una asignación de las descripciones del contrato a los tipos de contrato a los que se hace referencia.

TargetCompileUnit

Obtiene el objeto CodeCompileUnit de destino para generar el código de contrato de servicio.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

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

Genera una configuración de enlace para la instancia Binding especificada.

GenerateServiceContractType(ContractDescription)

Genera un tipo de contrato de servicio a partir de la instancia ContractDescription especificada.

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Genera un tipo de contrato de servicio y una configuración del extremo a partir de la instancia de ServiceEndpoint especificada.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a