Compartir a través de


WsdlImporter Clase

Definición

Importa los metadatos del lenguaje de descripción de servicios Web (WSDL) 1.1 con datos adjuntos de WS-Policy.

public ref class WsdlImporter : System::ServiceModel::Description::MetadataImporter
public class WsdlImporter : System.ServiceModel.Description.MetadataImporter
type WsdlImporter = class
    inherit MetadataImporter
Public Class WsdlImporter
Inherits MetadataImporter
Herencia
WsdlImporter

Ejemplos

El ejemplo de código siguiente muestra cómo utilizar WsdlImporter para agregar un System.Runtime.Serialization.IDataContractSurrogate personalizado, importar todos los contratos y compilar esos contratos y guardarlos en un archivo.

  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 la claseWsdlImporter para importar metadatos, así como para convertir esa información en varias clases que representan información de contrato y de punto de conexión.

La clase base para WsdlImporter, la clase MetadataImporter, define métodos para importar de manera selectiva información de contrato y punto de conexión y propiedades que exponen cualquier error de importación y aceptan información de tipo importante para el proceso de importación y conversión. El tipo WsdlImporter utiliza a los importadores de la directiva personalizados (implementaciones IPolicyImportExtension) de su tipo primario para administrar a las instrucciones de directiva personalizadas y sus propios importadores de WSDL personalizados (implementaciones IWsdlImportExtension) para administrar los elementos WSDL personalizados. Para obtener más información, consulte Extensión del sistema de metadatos.

Al importar la directiva de los documentos WSDL, el tipo WsdlImporter probará hasta 32 combinaciones de alternativas de la directiva asociadas a los asuntos de directiva de WSDL diferentes. Si ninguna combinación se importa limpiamente, la primera combinación se utiliza para construir un enlace personalizado parcial.

Además de estos métodos y propiedades, WsdlImporter también implementa métodos que admiten la importación de información de enlace y propiedades que proporcionan acceso a cualquier documento de directiva, documentos y extensiones WSDL y documentos de esquema XML. Para obtener información sobre cómo extender WsdlImporter para admitir elementos WSDL personalizados, vea IWsdlImportExtension.

Normalmente la clase WsdlImporter se utiliza en un proceso de tres pasos.

  1. Cree un objeto WsdlImporter y pase un objeto MetadataSet al constructor.

  2. Llame al método Import adecuado para recuperar los resultados.

  3. Compruebe la propiedad Errors para determinar si se han producido errores de importación.

Nota

Al importar los tipos de puerto de WSDL, si el elemento QName del tipo de puerto coincide a continuación con una entrada en el diccionario KnownContracts no se importa el tipo de puerto y en su lugar se utiliza el contrato conocido.

Ningún valor se devuelve de las propiedades WsdlImporter hasta que se llama a uno de los métodos de importación. Los objetos personalizados System.ServiceModel.Description.IWsdlImportExtension se pueden cargar en el WsdlImporter elemento mediante programación o mediante la configuración <de cliente wsdlImporters> .

Los metadatos que se importan cuando los puntos de conexión de servicio no se pueden utilizar para crear un tiempo de ejecución o exportar los metadatos, porque los puntos de conexión importados no contienen ninguna información del tipo administrado. Para utilizar los metadatos para crear un cliente o servicio en tiempo de ejecución o generar los metadatos, debe generar y compilar primero el código de los metadatos y utilizar esta información de tipo para crear un nuevo objeto System.ServiceModel.Description.ContractDescription mediante GetContract.

Constructores

WsdlImporter(MetadataSet)

Inicializa una nueva instancia de la clase WsdlImporter.

WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>)

Crea un objeto WsdlImporter a partir de los metadatos, los importadores de directiva personalizados y los importadores de WSDL personalizados especificados.

WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas)

Crea un objeto WsdlImporter a partir de los metadatos, los importadores de directiva personalizados y los importadores de WSDL personalizados especificados.

Propiedades

Errors

Obtiene un valor que indica si hubo errores al importar los metadatos.

(Heredado de MetadataImporter)
KnownContracts

Obtiene un diccionario de contratos por nombre que es conocido por el importador.

(Heredado de MetadataImporter)
PolicyImportExtensions

Obtiene una colección de importadores de directiva a los que el importador llama para procesar las aserciones de directiva.

(Heredado de MetadataImporter)
State

Obtiene o establece una colección de objetos utilizada en la importación de metadatos.

(Heredado de MetadataImporter)
WsdlDocuments

Obtiene y establece un conjunto de objetos ServiceDescription que describen la información del contrato en los documentos de metadatos.

WsdlImportExtensions

Obtiene o establece un conjunto de objetos IWsdlImportExtension que se usan para importar información de WSDL personalizada.

XmlSchemas

Obtiene un conjunto de objetos XmlSchema que describen los tipos en los metadatos.

Métodos

Equals(Object)

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

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
ImportAllBindings()

Devuelve un conjunto de objetos Binding importados de los documentos de metadatos.

ImportAllContracts()

Devuelve un conjunto de objetos ContractDescription que representan información del tipo de puerto en los documentos de metadatos.

ImportAllEndpoints()

Devuelve ServiceEndpointCollection que representa los puntos de conexión en documentos WSDL.

ImportBinding(Binding)

Devuelve un objeto Binding que representa la información de enlace de un conjunto de documentos de metadatos.

ImportContract(PortType)

Devuelve un objeto ContractDescription que representa los metadatos ubicados por la información del tipo de puerto especificada.

ImportEndpoint(Port)

Devuelve un objeto ServiceEndpoint desde un conjunto de documentos de metadatos que utiliza información del objeto Port especificado.

ImportEndpoints(Binding)

Devuelve ServiceEndpointCollection que representa todos los tipos de puerto de WSDL mediante el Bindingespecificado.

ImportEndpoints(PortType)

Devuelve ServiceEndpointCollection que representa todos los tipos de puerto de WSDL asociados al PortType especificado.

ImportEndpoints(Service)

Devuelve ServiceEndpointCollection que representa todos los tipos de puerto de WSDL dentro del Service especificado.

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