WsdlImporter Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Importa i metadati WSDL (Web Services Description Language) 1.1 con WS-Policy allegati.
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à
Esempio
Nell'esempio di codice seguente viene illustrato come usare WsdlImporter per aggiungere un oggetto personalizzato System.Runtime.Serialization.IDataContractSurrogate, importare tutti i contratti e compilarli e salvarli in un 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
Usare la WsdlImporter classe per importare metadati e convertire tali informazioni in varie classi che rappresentano informazioni sul contratto e sull'endpoint.
La classe base per WsdlImporter, la MetadataImporter classe , definisce metodi che importano in modo selettivo le informazioni e le proprietà del contratto e dell'endpoint che espongono eventuali errori di importazione e accettano informazioni sul tipo rilevanti per il processo di importazione e conversione. Il WsdlImporter tipo usa gli utilità di importazione di criteri personalizzati (IPolicyImportExtension implementazioni) dal tipo padre per gestire istruzioni di criteri personalizzate e le proprie utilità di importazione WSDL personalizzate (IWsdlImportExtension implementazioni) per gestire gli elementi WSDL personalizzati. Per informazioni dettagliate, vedere Estensione del sistema di metadati.
Quando si importano criteri da documenti WSDL, il WsdlImporter tipo tenterà fino a 32 combinazioni di alternative di criteri associate ai diversi soggetti dei criteri WSDL. Se nessuna combinazione viene importata senza errori, la prima combinazione viene usata per costruire un binding personalizzato parziale.
Oltre a questi metodi e proprietà, WsdlImporter implementa anche metodi che supportano l'importazione di informazioni e proprietà di associazione che forniscono l'accesso a qualsiasi documento di criteri, documenti WSDL, estensioni WSDL e documenti XML Schema. Per informazioni sull'estensione WsdlImporter per supportare elementi WSDL personalizzati, vedere IWsdlImportExtension.
In genere la WsdlImporter classe viene usata in un processo in tre passaggi.
Creare un WsdlImporter oggetto e passare un MetadataSet oggetto al costruttore.
Chiamare il metodo appropriato
Importper recuperare i risultati.Controllare la Errors proprietà per determinare se sono presenti errori di importazione.
Annotazioni
Quando si importano tipi di porta WSDL, se QName del tipo di porta corrisponde a una voce nel KnownContracts dizionario, il tipo di porta non viene importato e viene invece usato il contratto noto.
Non vengono restituiti valori dalle WsdlImporter proprietà finché non viene chiamato uno dei metodi di importazione. Gli oggetti personalizzati System.ServiceModel.Description.IWsdlImportExtension possono essere caricati nell'oggetto a WsdlImporter livello di codice o usando l'elemento wsdlImporters> di configurazione< client.
I metadati importati come endpoint di servizio non possono essere usati per creare un runtime o esportare metadati perché gli endpoint importati non contengono informazioni sul tipo gestito. Per usare i metadati per creare un runtime client o di servizio o per generare metadati, è necessario innanzitutto generare e compilare codice dai metadati e usare tali informazioni sul tipo per creare un nuovo System.ServiceModel.Description.ContractDescription oggetto usando GetContract.
Costruttori
| Nome | Descrizione |
|---|---|
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
Crea un WsdlImporter oggetto dai metadati specificati, dalle utilità di importazione di criteri personalizzate e dalle utilità di importazione WSDL personalizzate. |
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
Crea un WsdlImporter oggetto dai metadati specificati, dalle utilità di importazione di criteri personalizzate e dalle utilità di importazione WSDL personalizzate. |
| WsdlImporter(MetadataSet) |
Inizializza una nuova istanza della classe WsdlImporter. |
Proprietà
| Nome | Descrizione |
|---|---|
| Errors |
Ottiene un valore che indica se si sono verificati errori durante l'importazione dei metadati. (Ereditato da MetadataImporter) |
| KnownContracts |
Ottiene un dizionario di contratti in base al nome che l'utilità di importazione conosce. (Ereditato da MetadataImporter) |
| PolicyImportExtensions |
Ottiene una raccolta di utilità di importazione di criteri che l'utilità di importazione chiama per elaborare le asserzioni dei criteri. (Ereditato da MetadataImporter) |
| State |
Ottiene o imposta una raccolta di oggetti utilizzati nell'importazione di metadati. (Ereditato da MetadataImporter) |
| WsdlDocuments |
Ottiene un set di ServiceDescription oggetti che descrivono le informazioni sul contratto nei documenti di metadati. |
| WsdlImportExtensions |
Ottiene un set di IWsdlImportExtension oggetti utilizzati per importare informazioni WSDL personalizzate. |
| XmlSchemas |
Ottiene un set di XmlSchema oggetti che descrivono i tipi nei metadati. |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| ImportAllBindings() |
Restituisce un set di oggetti importati dai documenti di Binding metadati. |
| ImportAllContracts() |
Restituisce un set di ContractDescription oggetti che rappresentano le informazioni sul tipo di porta nei documenti di metadati. |
| ImportAllEndpoints() |
Restituisce un oggetto ServiceEndpointCollection che rappresenta gli endpoint nei documenti WSDL. |
| ImportBinding(Binding) |
Restituisce un Binding oggetto che rappresenta le informazioni di associazione da un set di documenti di metadati. |
| ImportContract(PortType) |
Restituisce un ContractDescription oggetto che rappresenta i metadati che si trovano in base alle informazioni sul tipo di porta specificate. |
| ImportEndpoint(Port) |
Restituisce un oggetto ServiceEndpoint da un set di documenti di metadati che utilizza informazioni dall'oggetto specificato Port . |
| ImportEndpoints(Binding) |
Restituisce un oggetto ServiceEndpointCollection che rappresenta tutti i tipi di porta WSDL utilizzando l'oggetto specificato Binding. |
| ImportEndpoints(PortType) |
Restituisce un oggetto ServiceEndpointCollection che rappresenta tutti i tipi di porta WSDL associati all'oggetto specificato PortType. |
| ImportEndpoints(Service) |
Restituisce un oggetto ServiceEndpointCollection che rappresenta tutti i tipi di porta WSDL all'interno dell'oggetto specificato Service. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |