MetadataImporter 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 in ServiceEndpoint oggetti.
public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
- Ereditarietà
-
MetadataImporter
- Derivato
Esempio
Nell'esempio seguente viene illustrato l'uso della System.ServiceModel.Description.WsdlImporter classe derivata per importare metadati usando lo stato personalizzato, controllare la Errors proprietà, compilare metadati importati in tipi gestiti e salvare il risultato in un file di codice.
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 un'implementazione della classe astratta per importare i metadati del MetadataImporter servizio. I tipi che derivano dalla classe implementano il MetadataImporter supporto per l'importazione di formati di metadati che sfruttano la logica di importazione WS-Policy in Windows Communication Foundation (WCF).
Un'implementazione MetadataImporter raccoglie le espressioni di criteri associate ai metadati del servizio in un System.ServiceModel.Description.PolicyConversionContext oggetto . MetadataImporter elabora quindi i criteri come parte dell'importazione dei metadati, chiamando le implementazioni dell'interfaccia System.ServiceModel.Description.IPolicyImportExtension nella proprietà MetadataImporter.PolicyImportExtensions.
È possibile aggiungere il supporto per l'importazione di nuove asserzioni di criteri in un MetadataImporter oggetto aggiungendo la propria implementazione dell'interfaccia alla proprietà in un'istanza System.ServiceModel.Description.IPolicyImportExtensionMetadataImporter.PolicyImportExtensionsMetadataImporter di . In alternativa, è possibile registrare l'estensione di importazione dei criteri nel file di configurazione dell'applicazione.
Il System.ServiceModel.Description.WsdlImporter tipo è l'implementazione della MetadataImporter classe astratta inclusa in WCF. Il System.ServiceModel.Description.WsdlImporter tipo importa i metadati WSDL con criteri associati raggruppati in un System.ServiceModel.Description.MetadataSet oggetto .
È possibile aggiungere il supporto per l'importazione di estensioni WSDL implementando l'interfaccia System.ServiceModel.Description.IWsdlImportExtension e quindi aggiungendo l'implementazione alla proprietà nell'istanza WsdlImporter.WsdlImportExtensionsSystem.ServiceModel.Description.WsdlImporter . System.ServiceModel.Description.WsdlImporter può anche caricare le implementazioni dell'interfaccia System.ServiceModel.Description.IWsdlImportExtension registrata nel file di configurazione dell'applicazione.
Annotazioni
Poiché il MetadataImporter costruttore è interno, non è possibile derivare da MetadataImporter in questa versione.
Proprietà
| Nome | Descrizione |
|---|---|
| Errors |
Ottiene un valore che indica se si sono verificati errori durante l'importazione dei metadati. |
| KnownContracts |
Ottiene un dizionario di contratti in base al nome che l'utilità di importazione conosce. |
| PolicyImportExtensions |
Ottiene una raccolta di utilità di importazione di criteri che l'utilità di importazione chiama per elaborare le asserzioni dei criteri. |
| State |
Ottiene o imposta una raccolta di oggetti utilizzati nell'importazione di 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) |
| ImportAllContracts() |
Quando sottoposto a override in una classe derivata, restituisce una raccolta di contratti importati dai metadati. |
| ImportAllEndpoints() |
Quando sottoposto a override in una classe derivata, restituisce tutti gli endpoint nei metadati. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |