ServiceContractGenerator Clase

Definición

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

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

Ejemplos

En el ejemplo siguiente se muestra el uso de para ServiceContractGenerator convertir metadatos descargados en 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

ServiceContractGenerator Use para crear herramientas o para modificar el proceso de generación de contratos predeterminado mediante .System.ServiceModel.Description.IWsdlImportExtension

Constructores

Nombre Description
ServiceContractGenerator()

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

ServiceContractGenerator(CodeCompileUnit, Configuration)

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

ServiceContractGenerator(CodeCompileUnit)

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

ServiceContractGenerator(Configuration)

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

Propiedades

Nombre Description
Configuration

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

Errors

Obtiene una colección de MetadataConversionError objetos generados al generar código de contrato de servicio y configuraciones de punto de conexión.

NamespaceMappings

Obtiene una asignación de espacios de nombres de descripción de contrato a espacios de nombres administrados que se usan al generar código.

Options

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

ReferencedTypes

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

TargetCompileUnit

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

Métodos

Nombre Description
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

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

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

GenerateServiceContractType(ContractDescription)

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

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

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

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a