Udostępnij za pośrednictwem


MetadataImporter Klasa

Definicja

Importuje metadane do ServiceEndpoint obiektów.

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Dziedziczenie
MetadataImporter
Pochodne

Przykłady

W poniższym przykładzie pokazano użycie klasy pochodnej System.ServiceModel.Description.WsdlImporter do importowania metadanych przy użyciu stanu niestandardowego, sprawdzania Errors właściwości, kompilowania zaimportowanych metadanych do typów zarządzanych i zapisywania wyniku w pliku kodu.

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

Uwagi

Użyj implementacji klasy abstrakcyjnej, MetadataImporter aby zaimportować metadane usługi. Typy pochodzące z MetadataImporter klasy implementują obsługę importowania formatów metadanych, które korzystają z logiki importowania WS-Policy w programie Windows Communication Foundation (WCF).

Implementacja MetadataImporter zbiera wyrażenia zasad dołączone do metadanych usługi w System.ServiceModel.Description.PolicyConversionContext obiekcie. Następnie MetadataImporter przetwarza zasady w ramach importowania metadanych przez wywołanie implementacji interfejsu System.ServiceModel.Description.IPolicyImportExtensionMetadataImporter.PolicyImportExtensions we właściwości .

Możesz dodać obsługę importowania nowych asercji zasad do klasy MetadataImporter , dodając własną implementację interfejsu System.ServiceModel.Description.IPolicyImportExtension do MetadataImporter.PolicyImportExtensions właściwości w wystąpieniu MetadataImporter . Alternatywnie możesz zarejestrować rozszerzenie importu zasad w pliku konfiguracji aplikacji.

Typ System.ServiceModel.Description.WsdlImporter jest implementacją klasy abstrakcyjnej dołączonej MetadataImporter do programu WCF. Typ System.ServiceModel.Description.WsdlImporter importuje metadane WSDL z dołączonymi zasadami, które są powiązane w System.ServiceModel.Description.MetadataSet obiekcie.

Obsługę importowania rozszerzeń WSDL można dodać, implementując System.ServiceModel.Description.IWsdlImportExtension interfejs, a następnie dodając implementację do właściwości w wystąpieniu WsdlImporter.WsdlImportExtensionsSystem.ServiceModel.Description.WsdlImporter . Element System.ServiceModel.Description.WsdlImporter może również ładować implementacje interfejsu zarejestrowanego System.ServiceModel.Description.IWsdlImportExtension w pliku konfiguracji aplikacji.

Uwaga

MetadataImporter Ponieważ konstruktor jest wewnętrzny, nie można pochodzić z MetadataImporter tej wersji.

Właściwości

Errors

Pobiera wartość wskazującą, czy wystąpiły błędy podczas importowania metadanych.

KnownContracts

Pobiera słownik kontraktów według nazwy, o których zna importer.

PolicyImportExtensions

Pobiera kolekcję importerów zasad, które importer wywołuje do przetwarzania asercji zasad.

State

Pobiera lub ustawia kolekcję obiektów używanych podczas importowania metadanych.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
ImportAllContracts()

Po przesłonięciu w klasie pochodnej zwraca kolekcję kontraktów zaimportowanych z metadanych.

ImportAllEndpoints()

Po zastąpieniu w klasie pochodnej zwraca wszystkie punkty końcowe w metadanych.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy