WsdlImporter Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Importerar WSDL-metadata (Web Services Description Language) 1.1 med WS-Policy bifogade filer.
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
- Arv
Exempel
I följande kodexempel visas hur du använder WsdlImporter för att lägga till en anpassad System.Runtime.Serialization.IDataContractSurrogate, importera alla kontrakt och kompilera kontrakten och spara dem i en fil.
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();
}
Kommentarer
WsdlImporter Använd klassen för att importera metadata och konvertera informationen till olika klasser som representerar kontrakt- och slutpunktsinformation.
Basklassen WsdlImporter för MetadataImporter, klassen, definierar metoder som selektivt importerar kontrakt- och slutpunktsinformation och egenskaper som exponerar eventuella importfel och accepterar typinformation som är relevant för import- och konverteringsprocessen. Typen WsdlImporter använder anpassade principimportörer (IPolicyImportExtension implementeringar) från den överordnade typen för att hantera anpassade principinstruktioner och egna anpassade WSDL-importörer (IWsdlImportExtension implementeringar) för att hantera anpassade WSDL-element. Mer information finns i Utöka metadatasystemet.
När du importerar en princip från WSDL-dokument WsdlImporter provar typen upp till 32 kombinationer av principalternativ som är kopplade till de olika WSDL-principämnena. Om ingen kombination importeras utan problem används den första kombinationen för att konstruera en delvis anpassad bindning.
Utöver dessa metoder och egenskaper WsdlImporter implementerar även metoder som stöder import av bindningsinformation och egenskaper som ger åtkomst till principdokument, WSDL-dokument, WSDL-tillägg och XML-schemadokument. Information om hur du utökar WsdlImporter för att stödja anpassade WSDL-element finns i IWsdlImportExtension.
WsdlImporter Vanligtvis används klassen i en trestegsprocess.
Skapa ett WsdlImporter objekt och skicka ett MetadataSet objekt till konstruktorn.
Anropa lämplig
Importmetod för att hämta resultatet.Kontrollera egenskapen Errors för att avgöra om det finns några importfel.
Note
Om QName för porttypen matchar en post i KnownContracts ordlistan när du importerar WSDL-porttyper importeras inte porttypen och det kända kontraktet används i stället.
Inga värden returneras från WsdlImporter egenskaperna förrän någon av importmetoderna anropas. Anpassade System.ServiceModel.Description.IWsdlImportExtension objekt kan antingen läsas in i WsdlImporter programmatiskt eller med hjälp av klientkonfigurationen <wsdlImporters-elementet> .
Metadata som har importerats som tjänstslutpunkter kan inte användas för att skapa en körnings- eller exportmetadata eftersom de importerade slutpunkterna inte innehåller någon information om hanterad typ. Om du vill använda metadata för att skapa en klient- eller tjänstkörning eller för att generera metadata måste du först generera och kompilera kod från metadata och använda den typen av information för att skapa ett nytt System.ServiceModel.Description.ContractDescription objekt med hjälp av GetContract.
Konstruktorer
| Name | Description |
|---|---|
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
Skapar ett WsdlImporter objekt från angivna metadata, anpassade principimportörer och anpassade WSDL-importörer. |
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
Skapar ett WsdlImporter objekt från angivna metadata, anpassade principimportörer och anpassade WSDL-importörer. |
| WsdlImporter(MetadataSet) |
Initierar en ny instans av WsdlImporter klassen. |
Egenskaper
| Name | Description |
|---|---|
| Errors |
Hämtar ett värde som anger om det uppstod fel vid import av metadata. (Ärvd från MetadataImporter) |
| KnownContracts |
Hämtar en ordlista med kontrakt efter namn som importören känner till. (Ärvd från MetadataImporter) |
| PolicyImportExtensions |
Hämtar en samling principimportörer som importören anropar för att bearbeta principkontroller. (Ärvd från MetadataImporter) |
| State |
Hämtar eller anger en samling objekt som används vid import av metadata. (Ärvd från MetadataImporter) |
| WsdlDocuments |
Hämtar en uppsättning ServiceDescription objekt som beskriver kontraktsinformationen i metadatadokumenten. |
| WsdlImportExtensions |
Hämtar en uppsättning IWsdlImportExtension objekt som används för att importera anpassad WSDL-information. |
| XmlSchemas |
Hämtar en uppsättning XmlSchema objekt som beskriver typer i metadata. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| ImportAllBindings() |
Returnerar en uppsättning Binding objekt som importerats från metadatadokumenten. |
| ImportAllContracts() |
Returnerar en uppsättning ContractDescription objekt som representerar porttypsinformation i metadatadokumenten. |
| ImportAllEndpoints() |
Returnerar en ServiceEndpointCollection som representerar slutpunkterna i WSDL-dokument. |
| ImportBinding(Binding) |
Returnerar ett Binding objekt som representerar bindningsinformation från en uppsättning metadatadokument. |
| ImportContract(PortType) |
Returnerar ett ContractDescription objekt som representerar metadata som finns i den angivna porttypsinformationen. |
| ImportEndpoint(Port) |
Returnerar en ServiceEndpoint från en uppsättning metadatadokument som använder information från det angivna Port objektet. |
| ImportEndpoints(Binding) |
Returnerar en ServiceEndpointCollection som representerar alla WSDL-porttyper med den angivna Binding. |
| ImportEndpoints(PortType) |
Returnerar en ServiceEndpointCollection som representerar alla WSDL-porttyper som är associerade med den angivna PortType. |
| ImportEndpoints(Service) |
Returnerar en ServiceEndpointCollection som representerar alla WSDL-porttyper inom angiven Service. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |