WsdlImporter Clase

Definición

Importa los metadatos del lenguaje de descripción de servicios Web (WSDL) 1.1 con datos adjuntos de WS-Policy.Imports Web Services Description Language (WSDL) 1.1 metadata with WS-Policy attachments.

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.The following code example shows how to use the WsdlImporter to add a custom System.Runtime.Serialization.IDataContractSurrogate, import all contracts, and compile those contracts and save them to a file.

       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 extremo.Use the WsdlImporter class to import metadata as well as convert that information into various classes that represent contract and endpoint information.

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.The base class for WsdlImporter, the MetadataImporter class, defines methods that selectively import contract and endpoint information and properties that expose any import errors and accept type information relevant to the import and conversion process. 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.The WsdlImporter type uses the custom policy importers (IPolicyImportExtension implementations) from its parent type to handle custom policy statements and its own custom WSDL importers (IWsdlImportExtension implementations) to handle custom WSDL elements. Para obtener más información, consulte extender el sistemade metadatos.For details, see Extending the Metadata System.

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.When importing policy from WSDL documents, the WsdlImporter type will try up to 32 combinations of policy alternatives attached to the different WSDL policy subjects. Si ninguna combinación se importa limpiamente, la primera combinación se utiliza para construir un enlace personalizado parcial.If no combination imports cleanly, the first combination is used to construct a partial custom binding.

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.In addition to these methods and properties, WsdlImporter also implements methods that support importing binding information and properties that provide access to any policy documents, WSDL documents, WSDL extensions, and XML schema documents. Para obtener información sobre cómo extender WsdlImporter para admitir elementos WSDL personalizados, vea IWsdlImportExtension.For information about extending WsdlImporter to support custom WSDL elements, see IWsdlImportExtension.

Normalmente la clase WsdlImporter se utiliza en un proceso de tres pasos.Typically the WsdlImporter class is used in a three-step process.

  1. Cree un objeto WsdlImporter y pase un objeto MetadataSet al constructor.Create a WsdlImporter object and pass a MetadataSet object to the constructor.

  2. Llame al método Import adecuado para recuperar los resultados.Call the appropriate Import method to retrieve the results.

  3. Compruebe la propiedad Errors para determinar si se han producido errores de importación.Check the Errors property to determine whether there are any import errors.

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.When importing WSDL port types, if the QName of the port type matches an entry in the KnownContracts dictionary then the port type is not imported and the known contract is used instead.

Ningún valor se devuelve de las propiedades WsdlImporter hasta que se llama a uno de los métodos de importación.No values are returned from the WsdlImporter properties until one of the import methods is called. Los System.ServiceModel.Description.IWsdlImportExtension objetos personalizados se pueden cargar en el WsdlImporter mediante programación o mediante el elemento <wsdlImporters> de configuración de cliente.Custom System.ServiceModel.Description.IWsdlImportExtension objects can either be loaded into the WsdlImporter programmatically or using the client configuration <wsdlImporters> element.

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.Metadata that has been imported as service endpoints cannot be used to create a runtime or export metadata because the imported endpoints contain no managed type information. 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.To use the metadata to create a client or service runtime or to generate metadata, you must first generate and compile code from the metadata and use that type information to create a new System.ServiceModel.Description.ContractDescription object using GetContract.

Constructores

WsdlImporter(MetadataSet)

Inicializa una nueva instancia de la clase WsdlImporter.Initializes a new instance of the WsdlImporter class.

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.Creates a WsdlImporter object from the specified metadata, custom policy importers, and custom WSDL importers.

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.Creates a WsdlImporter object from the specified metadata, custom policy importers, and custom WSDL importers.

Propiedades

Errors

Obtiene un valor que indica si hubo errores al importar los metadatos.Gets a value that indicates whether there were errors importing the metadata.

(Heredado de MetadataImporter)
KnownContracts

Obtiene un diccionario de contratos por nombre que es conocido por el importador.Gets a dictionary of contracts by name that the importer knows about.

(Heredado de MetadataImporter)
PolicyImportExtensions

Obtiene una colección de importadores de directiva a los que el importador llama para procesar las aserciones de directiva.Gets a collection of policy importers that the importer calls to process policy assertions.

(Heredado de MetadataImporter)
State

Obtiene o establece una colección de objetos utilizada en la importación de metadatos.Gets or sets a collection of objects used in the importing of metadata.

(Heredado de MetadataImporter)
WsdlDocuments

Obtiene y establece un conjunto de objetos ServiceDescription que describen la información del contrato en los documentos de metadatos.Gets a set of ServiceDescription objects that describe the contract information in the metadata documents.

WsdlImportExtensions

Obtiene o establece un conjunto de objetos IWsdlImportExtension que se usan para importar información de WSDL personalizada.Gets a set of IWsdlImportExtension objects used to import custom WSDL information.

XmlSchemas

Obtiene un conjunto de objetos XmlSchema que describen los tipos en los metadatos.Gets a set of XmlSchema objects that describe types in the metadata.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetHashCode()

Sirve como función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
ImportAllBindings()

Devuelve un conjunto de objetos Binding importados de los documentos de metadatos.Returns a set of Binding objects imported from the metadata documents.

ImportAllContracts()

Devuelve un conjunto de objetos ContractDescription que representan información del tipo de puerto en los documentos de metadatos.Returns a set of ContractDescription objects that represent port type information in the metadata documents.

ImportAllEndpoints()

Devuelve ServiceEndpointCollection que representa los puntos de conexión en documentos WSDL.Returns a ServiceEndpointCollection that represents the endpoints in WSDL documents.

ImportBinding(Binding)

Devuelve un objeto Binding que representa la información de enlace de un conjunto de documentos de metadatos.Returns a Binding object that represents binding information from a set of metadata documents.

ImportContract(PortType)

Devuelve un objeto ContractDescription que representa los metadatos ubicados por la información del tipo de puerto especificada.Returns a ContractDescription object that represents metadata located by the specified port type information.

ImportEndpoint(Port)

Devuelve un objeto ServiceEndpoint desde un conjunto de documentos de metadatos que utiliza información del objeto Port especificado.Returns a ServiceEndpoint from a set of metadata documents that uses information from the specified Port object.

ImportEndpoints(Binding)

Devuelve ServiceEndpointCollection que representa todos los tipos de puerto de WSDL mediante el Bindingespecificado.Returns a ServiceEndpointCollection that represents all WSDL port types using the specified Binding.

ImportEndpoints(PortType)

Devuelve ServiceEndpointCollection que representa todos los tipos de puerto de WSDL asociados al PortType especificado.Returns a ServiceEndpointCollection that represents all WSDL port types associated with the specified PortType.

ImportEndpoints(Service)

Devuelve ServiceEndpointCollection que representa todos los tipos de puerto de WSDL dentro del Service especificado.Returns a ServiceEndpointCollection that represents all WSDL port types within the specified Service.

MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Se aplica a