WsdlImporter Klasa

Definicja

Importuje metadane języka opisu usług sieci Web (WSDL) 1.1 z załącznikami WS-Policy.

public ref class WsdlImporter : System::ServiceModel::Description::MetadataImporter
public class WsdlImporter : System.ServiceModel.Description.MetadataImporter
type WsdlImporter = class
    inherit MetadataImporter
Public Class WsdlImporter
Inherits MetadataImporter
Dziedziczenie
WsdlImporter

Przykłady

W poniższym przykładzie kodu pokazano, jak użyć polecenia WsdlImporter , aby dodać niestandardowy System.Runtime.Serialization.IDataContractSurrogateelement , zaimportować wszystkie kontrakty i skompilować te kontrakty i zapisać je w pliku.

  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

WsdlImporter Użyj klasy, aby zaimportować metadane, a także przekonwertować te informacje na różne klasy reprezentujące informacje o kontrakcie i punkcie końcowym.

Klasa bazowa MetadataImporter dla WsdlImporterklasy definiuje metody selektywnego importowania informacji o kontrakcie i punkcie końcowym oraz właściwości, które uwidaczniają wszelkie błędy importu i akceptują informacje o typie istotne dla procesu importowania i konwersji. Typ WsdlImporter używa niestandardowych importerów zasad (IPolicyImportExtension implementacji) z jego typu nadrzędnego do obsługi niestandardowych instrukcji zasad i własnych niestandardowych importerów WSDL (IWsdlImportExtension implementacji) do obsługi niestandardowych elementów WSDL. Aby uzyskać szczegółowe informacje, zobacz Rozszerzanie systemu metadanych.

Podczas importowania zasad z dokumentów WsdlImporter WSDL typ będzie próbował maksymalnie 32 kombinacji alternatyw zasad dołączonych do różnych tematów zasad WSDL. Jeśli żadna kombinacja nie jest czysta, pierwsza kombinacja jest używana do konstruowania częściowego powiązania niestandardowego.

Oprócz tych metod i właściwości WsdlImporter implementuje również metody, które obsługują importowanie informacji i właściwości powiązań, które zapewniają dostęp do wszystkich dokumentów zasad, dokumentów WSDL, rozszerzeń WSDL i dokumentów schematu XML. Aby uzyskać informacje o rozszerzaniu WsdlImporter na obsługę niestandardowych elementów WSDL, zobacz IWsdlImportExtension.

WsdlImporter Zazwyczaj klasa jest używana w procesie trzyetapowym.

  1. WsdlImporter Utwórz obiekt i przekaż MetadataSet obiekt do konstruktora.

  2. Wywołaj odpowiednią Import metodę, aby pobrać wyniki.

  3. Sprawdź właściwość, Errors aby określić, czy występują błędy importu.

Uwaga

Podczas importowania typów portów WSDL, jeśli nazwa QName typu portu jest zgodna z wpisem w słowniku KnownContracts , typ portu nie jest importowany, a znany kontrakt jest używany.

Żadne wartości nie są zwracane z WsdlImporter właściwości do momentu wywołania jednej z metod importowania. Obiekty niestandardowe System.ServiceModel.Description.IWsdlImportExtension mogą być ładowane WsdlImporter programowo lub przy użyciu elementu wsdlImporters> konfiguracji< klienta.

Metadane zaimportowane jako punkty końcowe usługi nie mogą być używane do tworzenia metadanych środowiska uruchomieniowego ani eksportowania, ponieważ zaimportowane punkty końcowe nie zawierają informacji o typie zarządzanym. Aby użyć metadanych do utworzenia środowiska uruchomieniowego klienta lub usługi lub wygenerowania metadanych, należy najpierw wygenerować i skompilować kod z metadanych i użyć tych informacji typu, aby utworzyć nowy System.ServiceModel.Description.ContractDescription obiekt przy użyciu polecenia GetContract.

Konstruktory

WsdlImporter(MetadataSet)

Inicjuje nowe wystąpienie klasy WsdlImporter.

WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>)

WsdlImporter Tworzy obiekt na podstawie określonych metadanych, niestandardowych importerów zasad i niestandardowych importerów WSDL.

WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas)

WsdlImporter Tworzy obiekt na podstawie określonych metadanych, niestandardowych importerów zasad i niestandardowych importerów WSDL.

Właściwości

Errors

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

(Odziedziczone po MetadataImporter)
KnownContracts

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

(Odziedziczone po MetadataImporter)
PolicyImportExtensions

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

(Odziedziczone po MetadataImporter)
State

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

(Odziedziczone po MetadataImporter)
WsdlDocuments

Pobiera zestaw ServiceDescription obiektów opisujących informacje o kontrakcie w dokumentach metadanych.

WsdlImportExtensions

Pobiera zestaw obiektów używanych do importowania niestandardowych IWsdlImportExtension informacji WSDL.

XmlSchemas

Pobiera zestaw XmlSchema obiektów opisujących typy w 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)
ImportAllBindings()

Zwraca zestaw Binding obiektów importowanych z dokumentów metadanych.

ImportAllContracts()

Zwraca zestaw ContractDescription obiektów reprezentujących informacje o typie portu w dokumentach metadanych.

ImportAllEndpoints()

Zwraca element ServiceEndpointCollection reprezentujący punkty końcowe w dokumentach WSDL.

ImportBinding(Binding)

Binding Zwraca obiekt reprezentujący informacje o powiązaniu z zestawu dokumentów metadanych.

ImportContract(PortType)

ContractDescription Zwraca obiekt reprezentujący metadane znajdujące się według określonych informacji o typie portu.

ImportEndpoint(Port)

Zwraca element ServiceEndpoint z zestawu dokumentów metadanych, które używają informacji z określonego Port obiektu.

ImportEndpoints(Binding)

Zwraca obiekt ServiceEndpointCollection reprezentujący wszystkie typy portów WSDL przy użyciu określonego Bindingelementu .

ImportEndpoints(PortType)

Zwraca obiekt ServiceEndpointCollection reprezentujący wszystkie typy portów WSDL skojarzone z określonym PortTypeelementem .

ImportEndpoints(Service)

Zwraca obiekt ServiceEndpointCollection reprezentujący wszystkie typy portów WSDL w ramach określonego Serviceelementu .

MemberwiseClone()

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

(Odziedziczone po Object)
ToString()

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

(Odziedziczone po Object)

Dotyczy