MetadataImporter Třída

Definice

Importuje metadata do ServiceEndpoint objektů.

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Dědičnost
MetadataImporter
Odvozené

Příklady

Následující příklad ukazuje použití odvozené třídy k importu metadat pomocí vlastního System.ServiceModel.Description.WsdlImporter stavu, kontrolu Errors vlastnosti, kompilaci importovaných metadat do spravovaných typů a uložení výsledku do souboru kódu.

  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();
  }

Poznámky

K importu metadat služby použijte implementaci MetadataImporter abstraktní třídy. Typy odvozené z MetadataImporter třídy implementují podporu importu formátů metadat, které využívají WS-Policy logiku importu ve Windows Communication Foundation (WCF).

Implementace MetadataImporter shromažďuje výrazy zásad připojené k metadatům služby v objektu System.ServiceModel.Description.PolicyConversionContext . Potom MetadataImporter zpracuje zásady jako součást importu metadat voláním implementací System.ServiceModel.Description.IPolicyImportExtension rozhraní ve MetadataImporter.PolicyImportExtensions vlastnosti.

Podporu importu nových kontrolních výrazů zásad do objektu MetadataImporter můžete přidat přidáním vlastní implementace System.ServiceModel.Description.IPolicyImportExtension rozhraní do MetadataImporter.PolicyImportExtensions vlastnosti v MetadataImporter instanci. Případně můžete rozšíření importu zásad zaregistrovat v konfiguračním souboru aplikace.

Typ System.ServiceModel.Description.WsdlImporter je implementace MetadataImporter abstraktní třídy, která je součástí WCF. Typ System.ServiceModel.Description.WsdlImporter importuje metadata WSDL s připojenými zásadami, které jsou součástí objektu System.ServiceModel.Description.MetadataSet .

Podporu importu rozšíření WSDL můžete přidat implementací System.ServiceModel.Description.IWsdlImportExtension rozhraní a následným přidáním implementace do WsdlImporter.WsdlImportExtensions vlastnosti ve vaší System.ServiceModel.Description.WsdlImporter instanci. Může System.ServiceModel.Description.WsdlImporter také načíst implementace rozhraní zaregistrované System.ServiceModel.Description.IWsdlImportExtension v konfiguračním souboru aplikace.

Poznámka

Vzhledem k tomu, že MetadataImporter konstruktor je interní, nelze odvodit z MetadataImporter této verze.

Vlastnosti

Errors

Získá hodnotu, která označuje, zda došlo k chybám při importu metadat.

KnownContracts

Získá slovník kontraktů podle názvu, o kterém dovozce ví.

PolicyImportExtensions

Získá kolekci importérů zásad, které dovozce volá ke zpracování kontrolních výrazů zásad.

State

Získá nebo nastaví kolekci objektů používaných při importu metadat.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
ImportAllContracts()

Při přepsání v odvozené třídě vrátí kolekci kontraktů importovaných z metadat.

ImportAllEndpoints()

Při přepsání v odvozené třídě vrátí všechny koncové body v metadatech.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro