WsdlImporter Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Importuje metadata wsDL (Web Services Description Language) 1.1 s WS-Policy přílohami.
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
- Dědičnost
Příklady
Následující příklad kódu ukazuje, jak použít WsdlImporter k přidání vlastního System.Runtime.Serialization.IDataContractSurrogate, importu všech kontraktů a kompilaci těchto kontraktů a jejich uložení do souboru.
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
WsdlImporter Pomocí třídy můžete importovat metadata a tyto informace převést na různé třídy, které představují informace o kontraktu a koncovém bodu.
Základní třída pro WsdlImportertřídu MetadataImporter definuje metody, které selektivně importují informace o kontraktu a koncovém bodu a vlastnosti, které zpřístupňují případné chyby importu a přijímají informace o typu relevantní pro proces importu a převodu. Tento WsdlImporter typ používá importéry vlastních zásad (IPolicyImportExtension implementace) z nadřazeného typu ke zpracování vlastních prohlášení zásad a vlastních importů WSDL (IWsdlImportExtension implementací) pro zpracování vlastních elementů WSDL. Podrobnosti najdete v tématu Rozšíření systému metadat.
Při importu zásad z dokumentů WsdlImporter WSDL se typ pokusí až 32 kombinací alternativ zásad připojených k různým tématům zásad WSDL. Pokud žádná kombinace neimportuje čistě, první kombinace se použije k vytvoření částečné vlastní vazby.
Kromě těchto metod a vlastností WsdlImporter také implementuje metody, které podporují import informací o vazbách a vlastností, které poskytují přístup k dokumentům zásad, dokumentům WSDL, rozšířením WSDL a dokumentům schématu XML. Informace o rozšíření WsdlImporter na podporu vlastních elementů WSDL naleznete v tématu IWsdlImportExtension.
WsdlImporter Třída se obvykle používá v procesu se třemi kroky.
Vytvořte WsdlImporter objekt a předejte MetadataSet objekt konstruktoru.
Volejte příslušnou
Import
metodu pro načtení výsledků.Zkontrolujte vlastnost a Errors zjistěte, jestli nedošlo k nějakým chybám importu.
Poznámka
Při importu typů portů WSDL, pokud QName typu portu odpovídá položce ve slovníku KnownContracts , typ portu se neimportuje a místo toho se použije známý kontrakt.
Z WsdlImporter vlastností se nevrátí žádné hodnoty, dokud se nevolá jedna z metod importu. Vlastní System.ServiceModel.Description.IWsdlImportExtension objekty lze buď načíst do kódu programu, nebo pomocí elementu WsdlImporter wsdlImporters> konfigurace< klienta.
Metadata importovaná jako koncové body služby nelze použít k vytvoření metadat modulu runtime nebo exportu, protože importované koncové body neobsahují žádné informace o spravovaném typu. Chcete-li použít metadata k vytvoření modulu runtime klienta nebo služby nebo k vygenerování metadat, musíte nejprve vygenerovat a zkompilovat kód z metadat a použít tyto informace o typu k vytvoření nového System.ServiceModel.Description.ContractDescription objektu pomocí GetContract.
Konstruktory
WsdlImporter(MetadataSet) |
Inicializuje novou instanci WsdlImporter třídy. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
WsdlImporter Vytvoří objekt ze zadaných metadat, importovaných vlastních zásad a vlastních importů WSDL. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
WsdlImporter Vytvoří objekt ze zadaných metadat, importovaných vlastních zásad a vlastních importů WSDL. |
Vlastnosti
Errors |
Získá hodnotu, která označuje, zda při importu metadat došlo k chybám. (Zděděno od MetadataImporter) |
KnownContracts |
Získá slovník kontraktů podle názvu, o který dovozce ví. (Zděděno od MetadataImporter) |
PolicyImportExtensions |
Získá kolekci dovozců zásad, které dovozce volá ke zpracování kontrolních výrazů zásad. (Zděděno od MetadataImporter) |
State |
Získá nebo nastaví kolekci objektů použitých při importu metadat. (Zděděno od MetadataImporter) |
WsdlDocuments |
Získá sadu ServiceDescription objektů, které popisují informace kontraktu v dokumentech metadat. |
WsdlImportExtensions |
Získá sadu IWsdlImportExtension objektů používaných k importu vlastních informací WSDL. |
XmlSchemas |
Získá sadu XmlSchema objektů, které popisují typy v metadatech. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
ImportAllBindings() |
Vrátí sadu Binding objektů importovaných z dokumentů metadat. |
ImportAllContracts() |
Vrátí sadu ContractDescription objektů, které představují informace o typu portu v dokumentech metadat. |
ImportAllEndpoints() |
ServiceEndpointCollection Vrátí hodnotu, která představuje koncové body v dokumentech WSDL. |
ImportBinding(Binding) |
Binding Vrátí objekt, který představuje informace vazby ze sady dokumentů metadat. |
ImportContract(PortType) |
ContractDescription Vrátí objekt, který představuje metadata umístěná podle zadaných informací o typu portu. |
ImportEndpoint(Port) |
ServiceEndpoint Vrátí ze sady dokumentů metadat, které používají informace ze zadaného Port objektu. |
ImportEndpoints(Binding) |
ServiceEndpointCollection Vrátí hodnotu, která představuje všechny typy portů WSDL pomocí zadané Binding. |
ImportEndpoints(PortType) |
ServiceEndpointCollection Vrátí hodnotu, která představuje všechny typy portů WSDL přidružené k zadané PortType. |
ImportEndpoints(Service) |
ServiceEndpointCollection Vrátí hodnotu, která představuje všechny typy portů WSDL v zadaném Service. |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |