Condividi tramite


MetadataImporter Classe

Definizione

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)

Si applica a