WsdlImporter Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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.
WsdlImporter Utwórz obiekt i przekaż MetadataSet obiekt do konstruktora.
Wywołaj odpowiednią
Import
metodę, aby pobrać wyniki.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) |