Condividi tramite


MetadataImporter Classe

Definizione

Importa i metadati in oggetti ServiceEndpoint.

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'utilizzo della classe derivata System.ServiceModel.Description.WsdlImporter per importare metadati utilizzando uno stato personalizzato, controllando la proprietà Errors, compilando metadati importati in tipi gestiti e salvando 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

Utilizza un'implementazione della classe astratta MetadataImporter per importare i metadati del 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 di MetadataImporter raccoglie le espressioni di criteri collegate ai metadati del servizio in un oggetto System.ServiceModel.Description.PolicyConversionContext. 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 importare nuove asserzioni di criteri in un oggetto MetadataImporter aggiungendo la propria implementazione dell'interfaccia System.ServiceModel.Description.IPolicyImportExtension alla proprietà MetadataImporter.PolicyImportExtensions in un'istanza MetadataImporter. 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 tipo System.ServiceModel.Description.WsdlImporter importa metadati WSDL insieme ai relativi criteri allegati. Questi elementi vengono quindi raggruppati in un oggetto System.ServiceModel.Description.MetadataSet.

Per aggiungere il supporto per l'importazione di estensioni WSDL, implementare l'interfaccia System.ServiceModel.Description.IWsdlImportExtension, quindi aggiungere tale implementazione alla proprietà WsdlImporter.WsdlImportExtensions nell'istanza di System.ServiceModel.Description.WsdlImporter. È inoltre possibile utilizzare il tipo System.ServiceModel.Description.WsdlImporter per caricare implementazioni dell'interfaccia System.ServiceModel.Description.IWsdlImportExtension registrate nel file di configurazione dell'applicazione.

Nota

Poiché il costruttore MetadataImporter è interno, non è possibile derivare da MetadataImporter in questa versione.

Proprietà

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 noto all'utilità di importazione.

PolicyImportExtensions

Ottiene una raccolta di utilità di importazione dei criteri chiamate dall'utilità di importazione per elaborare le asserzioni dei criteri.

State

Ottiene o imposta una raccolta di oggetti utilizzata nell'importazione di metadati.

Metodi

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 l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
ImportAllContracts()

Quando viene sottoposto a override in una classe derivata, restituisce una raccolta di contratti importati dai metadati.

ImportAllEndpoints()

Quando viene sottoposto a override in una classe derivata, restituisce tutti gli endpoint nei metadati.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a