WsdlImporter Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee importeert u WSDL 1.1-metagegevens (Web Services Description Language) met WS-Policy bijlagen.
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
- Overname
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de WsdlImporter opdracht gebruikt om een aangepast bestand System.Runtime.Serialization.IDataContractSurrogatetoe te voegen, alle contracten te importeren en deze contracten samen te stellen en op te slaan in een bestand.
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();
}
Opmerkingen
Gebruik de WsdlImporter klasse om metagegevens te importeren en deze informatie te converteren naar verschillende klassen die contract- en eindpuntgegevens vertegenwoordigen.
De basisklasse voor WsdlImporter, de MetadataImporter klasse, definieert methoden die selectief contract- en eindpuntinformatie en -eigenschappen importeren die eventuele importfouten blootstellen en typegegevens accepteren die relevant zijn voor het import- en conversieproces. Het WsdlImporter type gebruikt de aangepaste beleidsimporteurs (IPolicyImportExtension implementaties) van het bovenliggende type om aangepaste beleidsinstructies en eigen aangepaste WSDL-importeurs (IWsdlImportExtension implementaties) af te handelen om aangepaste WSDL-elementen te verwerken. Zie Het metagegevenssysteem uitbreiden voor meer informatie.
Bij het importeren van beleid uit WSDL-documenten probeert het WsdlImporter type maximaal 32 combinaties van beleidsalternatieven die zijn gekoppeld aan de verschillende WSDL-beleidsonderwerpsen. Als er geen combinatie probleemloos wordt geïmporteerd, wordt de eerste combinatie gebruikt om een gedeeltelijke eigen binding te maken.
Naast deze methoden en eigenschappen WsdlImporter worden ook methoden geïmplementeerd die ondersteuning bieden voor het importeren van bindingsinformatie en eigenschappen die toegang bieden tot beleidsdocumenten, WSDL-documenten, WSDL-extensies en XML-schemadocumenten. Zie voor meer informatie over uitbreiding WsdlImporter ter ondersteuning van aangepaste WSDL-elementen IWsdlImportExtension.
Normaal gesproken wordt de WsdlImporter klasse gebruikt in een proces met drie stappen.
Maak een WsdlImporter object en geef een MetadataSet object door aan de constructor.
Roep de juiste
Importmethode aan om de resultaten op te halen.Controleer de Errors eigenschap om te bepalen of er importfouten zijn.
Note
Als bij het importeren van WSDL-poorttypen de QName van het poorttype overeenkomt met een vermelding in de KnownContracts woordenlijst, wordt het poorttype niet geïmporteerd en wordt het bekende contract gebruikt.
Er worden geen waarden geretourneerd uit de WsdlImporter eigenschappen totdat een van de importmethoden wordt aangeroepen. Aangepaste System.ServiceModel.Description.IWsdlImportExtension objecten kunnen programmatisch in het WsdlImporter programma worden geladen of met behulp van het clientconfiguratieelement< wsdlImporters>.
Metagegevens die als service-eindpunten zijn geïmporteerd, kunnen niet worden gebruikt om een runtime te maken of metagegevens te exporteren omdat de geïmporteerde eindpunten geen beheerde typegegevens bevatten. Als u de metagegevens wilt gebruiken om een client- of serviceruntime te maken of metagegevens te genereren, moet u eerst code genereren en compileren op basis van de metagegevens en dat typegegevens gebruiken om een nieuw System.ServiceModel.Description.ContractDescription object te maken met behulp van GetContract.
Constructors
| Name | Description |
|---|---|
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
Hiermee maakt u een WsdlImporter object op basis van de opgegeven metagegevens, aangepaste beleidsimporteurs en aangepaste WSDL-importeurs. |
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
Hiermee maakt u een WsdlImporter object op basis van de opgegeven metagegevens, aangepaste beleidsimporteurs en aangepaste WSDL-importeurs. |
| WsdlImporter(MetadataSet) |
Initialiseert een nieuw exemplaar van de WsdlImporter klasse. |
Eigenschappen
| Name | Description |
|---|---|
| Errors |
Hiermee wordt een waarde opgehaald die aangeeft of er fouten zijn opgetreden bij het importeren van de metagegevens. (Overgenomen van MetadataImporter) |
| KnownContracts |
Hiermee haalt u een woordenlijst met contracten op naam op waarvan de importeur weet. (Overgenomen van MetadataImporter) |
| PolicyImportExtensions |
Hiermee haalt u een verzameling beleidsimporteurs op die de importeur aanroept om beleidsverklaringen te verwerken. (Overgenomen van MetadataImporter) |
| State |
Hiermee haalt u een verzameling objecten op die worden gebruikt bij het importeren van metagegevens. (Overgenomen van MetadataImporter) |
| WsdlDocuments |
Hiermee haalt u een set ServiceDescription objecten op die de contractgegevens in de metagegevensdocumenten beschrijven. |
| WsdlImportExtensions |
Hiermee haalt u een set objecten op die worden gebruikt voor het importeren van IWsdlImportExtension aangepaste WSDL-gegevens. |
| XmlSchemas |
Hiermee haalt u een set XmlSchema objecten op die typen in de metagegevens beschrijven. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| ImportAllBindings() |
Hiermee wordt een set objecten geretourneerd die Binding zijn geïmporteerd uit de metagegevensdocumenten. |
| ImportAllContracts() |
Retourneert een set ContractDescription objecten die informatie over het poorttype in de metagegevensdocumenten vertegenwoordigen. |
| ImportAllEndpoints() |
Hiermee wordt een ServiceEndpointCollection resultaat geretourneerd dat de eindpunten in WSDL-documenten vertegenwoordigt. |
| ImportBinding(Binding) |
Retourneert een Binding object dat bindingsinformatie uit een set metagegevensdocumenten vertegenwoordigt. |
| ImportContract(PortType) |
Retourneert een ContractDescription object dat metagegevens vertegenwoordigt die zich bevinden op basis van de opgegeven poorttypegegevens. |
| ImportEndpoint(Port) |
Retourneert een ServiceEndpoint van een set metagegevensdocumenten die gegevens uit het opgegeven Port object gebruiken. |
| ImportEndpoints(Binding) |
Retourneert een ServiceEndpointCollection die alle WSDL-poorttypen vertegenwoordigt met behulp van de opgegeven Binding. |
| ImportEndpoints(PortType) |
Retourneert een ServiceEndpointCollection die alle WSDL-poorttypen vertegenwoordigt die zijn gekoppeld aan de opgegeven PortType. |
| ImportEndpoints(Service) |
Retourneert een ServiceEndpointCollection die alle WSDL-poorttypen binnen de opgegeven staat Service. |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |