WsdlImporter WsdlImporter WsdlImporter WsdlImporter Class

Definizione

Importa metadati Web Services Description Language (WSDL) 1.1 con allegati 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
Ereditarietà

Esempi

Nell'esempio di codice seguente viene illustrato come utilizzare l'oggetto WsdlImporter per aggiungere un'interfaccia System.Runtime.Serialization.IDataContractSurrogate personalizzata, importare tutti i contratti, compilarli e salvarli in un file.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();
       }

Commenti

Utilizzare la classe WsdlImporter per importare metadati e per convertire tali informazioni in varie classi che rappresentano informazioni di contratto e di endpoint.Use the WsdlImporter class to import metadata as well as convert that information into various classes that represent contract and endpoint information.

La classe base per WsdlImporter, ovvero MetadataImporter, definisce metodi che importano selettivamente informazioni di contratto e di endpoint e proprietà che espongono eventuali errore di importazione e accettano informazioni sul tipo relative al processo di importazione e di conversione.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. Il tipo WsdlImporter utilizza le unità di importazione di criteri personalizzate (implementazioni di IPolicyImportExtension) provenienti dal tipo padre per gestire istruzioni di criteri personalizzate e proprie unità di importazione WSDL personalizzate (implementazioni di IWsdlImportExtension) per gestire elementi WSDL personalizzati.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. Per informazioni dettagliate, vedere estensione del sistema di metadati.For details, see Extending the Metadata System.

Durante l'importazione di criteri da documenti WSDL, il tipo WsdlImporter tenta fino a 32 combinazioni di alternative di criteri collegate ai diversi soggetti di criteri WSDL.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. Se nessuna combinazione viene importata correttamente, viene utilizzata la prima combinazione per costruire un'associazione personalizzata parziale.If no combination imports cleanly, the first combination is used to construct a partial custom binding.

Oltre a questi metodi e a queste proprietà, WsdlImporter implementa inoltre metodi che supportano l'importazione di informazioni di associazione e proprietà che forniscono accesso a qualsiasi documento di criteri, documento WSDL, estensione WSDL e documento di XML Schema.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. Per informazioni sull'estensione di WsdlImporter per supportare elementi WSDL personalizzati, vedere IWsdlImportExtension.For information about extending WsdlImporter to support custom WSDL elements, see IWsdlImportExtension.

In genere, la classe WsdlImporter viene utilizzata in un processo composto da tre passaggi.Typically the WsdlImporter class is used in a three-step process.

  1. Creazione di un oggetto WsdlImporter e passaggio di un oggetto MetadataSet al costruttore.Create a WsdlImporter object and pass a MetadataSet object to the constructor.

  2. Chiamata al metodo Import appropriato per recuperare i risultati.Call the appropriate Import method to retrieve the results.

  3. Controllo della proprietà Errors per accertare l'eventuale presenza di errori di importazione.Check the Errors property to determine whether there are any import errors.

Nota

Durante l'importazione di tipi di porta WSDL, se QName del tipo di porta corrisponde a una voce nel dizionario KnownContracts il tipo di porta non viene importato e viene invece utilizzato il contratto noto.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.

Non viene restituito alcun valore dalla proprietà WsdlImporter prima della chiamata a uno dei metodi di importazione.No values are returned from the WsdlImporter properties until one of the import methods is called. Gli System.ServiceModel.Description.IWsdlImportExtension oggetti personalizzati possono essere caricati nell'oggetto WsdlImporter a livello di codice o tramite <> l'elemento di configurazione client WsdlImporters.Custom System.ServiceModel.Description.IWsdlImportExtension objects can either be loaded into the WsdlImporter programmatically or using the client configuration <wsdlImporters> element.

I metadati importati come endpoint del servizio non possono essere utilizzati per creare metadati di runtime o di esportazione perché gli endpoint importati non contengono informazioni sui tipi gestiti.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. Per utilizzare i metadati per creare un runtime del client o del servizio o per generare metadati, è necessario innanzitutto generare e compilare codice dai metadati e utilizzare tali informazioni sui tipi per creare un nuovo oggetto System.ServiceModel.Description.ContractDescription utilizzando 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.

Costruttori

WsdlImporter(MetadataSet) WsdlImporter(MetadataSet) WsdlImporter(MetadataSet) WsdlImporter(MetadataSet)

Inizializza una nuova istanza della classe WsdlImporter.Initializes a new instance of the WsdlImporter class.

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

Crea un oggetto WsdlImporter da entità specificate, ovvero metadati, unità di importazione di criteri personalizzate e unità di importazione WSDL personalizzate.Creates a WsdlImporter object from the specified metadata, custom policy importers, and custom WSDL importers.

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

Crea un oggetto WsdlImporter da entità specificate, ovvero metadati, unità di importazione di criteri personalizzate e unità di importazione WSDL personalizzate.Creates a WsdlImporter object from the specified metadata, custom policy importers, and custom WSDL importers.

Proprietà

Errors Errors Errors Errors

Ottiene un valore che indica se si sono verificati errori durante l'importazione dei metadati.Gets a value that indicates whether there were errors importing the metadata.

(Inherited from MetadataImporter)
KnownContracts KnownContracts KnownContracts KnownContracts

Ottiene un dizionario di contratti in base al nome noto all'utilità di importazione.Gets a dictionary of contracts by name that the importer knows about.

(Inherited from MetadataImporter)
PolicyImportExtensions PolicyImportExtensions PolicyImportExtensions PolicyImportExtensions

Ottiene una raccolta di utilità di importazione dei criteri chiamate dall'utilità di importazione per elaborare le asserzioni dei criteri.Gets a collection of policy importers that the importer calls to process policy assertions.

(Inherited from MetadataImporter)
State State State State

Ottiene o imposta una raccolta di oggetti utilizzata nell'importazione di metadati.Gets or sets a collection of objects used in the importing of metadata.

(Inherited from MetadataImporter)
WsdlDocuments WsdlDocuments WsdlDocuments WsdlDocuments

Ottiene un set di oggetti ServiceDescription che descrivono le informazioni di contratto esistenti nei documenti dei metadati.Gets a set of ServiceDescription objects that describe the contract information in the metadata documents.

WsdlImportExtensions WsdlImportExtensions WsdlImportExtensions WsdlImportExtensions

Ottiene un set di oggetti IWsdlImportExtension utilizzato per importare informazioni WSDL personalizzate.Gets a set of IWsdlImportExtension objects used to import custom WSDL information.

XmlSchemas XmlSchemas XmlSchemas XmlSchemas

Ottiene un set di oggetti XmlSchema che descrivono tipi esistenti nei metadati.Gets a set of XmlSchema objects that describe types in the metadata.

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
ImportAllBindings() ImportAllBindings() ImportAllBindings() ImportAllBindings()

Restituisce un set di oggetti Binding importati dai documenti dei metadati.Returns a set of Binding objects imported from the metadata documents.

ImportAllContracts() ImportAllContracts() ImportAllContracts() ImportAllContracts()

Restituisce un set di oggetti ContractDescription che rappresentano le informazioni sui tipi di porta nei documenti dei metadati.Returns a set of ContractDescription objects that represent port type information in the metadata documents.

ImportAllEndpoints() ImportAllEndpoints() ImportAllEndpoints() ImportAllEndpoints()

Restituisce un oggetto ServiceEndpointCollection che rappresenta gli endpoint nei documenti WSDL.Returns a ServiceEndpointCollection that represents the endpoints in WSDL documents.

ImportBinding(Binding) ImportBinding(Binding) ImportBinding(Binding) ImportBinding(Binding)

Restituisce un oggetto Binding che rappresenta informazioni di associazione provenienti da un set di documenti dei metadati.Returns a Binding object that represents binding information from a set of metadata documents.

ImportContract(PortType) ImportContract(PortType) ImportContract(PortType) ImportContract(PortType)

Restituisce un oggetto ContractDescription che rappresenta i metadati individuati in base alle informazioni sui tipi di porta specificate.Returns a ContractDescription object that represents metadata located by the specified port type information.

ImportEndpoint(Port) ImportEndpoint(Port) ImportEndpoint(Port) ImportEndpoint(Port)

Restituisce un oggetto ServiceEndpoint da un set di documenti dei metadati che utilizza le informazioni provenienti dall'oggetto Port specificato.Returns a ServiceEndpoint from a set of metadata documents that uses information from the specified Port object.

ImportEndpoints(Binding) ImportEndpoints(Binding) ImportEndpoints(Binding) ImportEndpoints(Binding)

Restituisce un oggetto ServiceEndpointCollection che rappresenta tutti i tipi di porta WSDL che utilizzano l'oggetto Binding specificato.Returns a ServiceEndpointCollection that represents all WSDL port types using the specified Binding.

ImportEndpoints(PortType) ImportEndpoints(PortType) ImportEndpoints(PortType) ImportEndpoints(PortType)

Restituisce un oggetto ServiceEndpointCollection che rappresenta tutti i tipi di porta WSDL associati all'oggetto PortType specificato.Returns a ServiceEndpointCollection that represents all WSDL port types associated with the specified PortType.

ImportEndpoints(Service) ImportEndpoints(Service) ImportEndpoints(Service) ImportEndpoints(Service)

Restituisce un oggetto ServiceEndpointCollection che rappresenta tutti i tipi di porta WSDL contenuti nell'oggetto Service specificato.Returns a ServiceEndpointCollection that represents all WSDL port types within the specified Service.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a