WsdlImporter Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Importe des métadonnées WSDL (Web Services Description Language) 1.1 avec des pièces jointes 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
- Héritage
Exemples
L'exemple de code suivant indique comment utiliser WsdlImporter pour ajouter un System.Runtime.Serialization.IDataContractSurrogate personnalisé, importer tous les contrats, les compiler et les enregistrer dans un fichier.
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();
}
Remarques
Utilisez la classe WsdlImporter pour importer des métadonnées et convertir ces informations en différentes classes représentant les informations de contrat et de point de terminaison.
La classe de base de WsdlImporter, la classe MetadataImporter, définit des méthodes permettant d'importer sélectivement des informations de contrat et de point de terminaison ainsi que des propriétés qui exposent toute erreur d'importation et accepte des informations de types liées au processus d'importation et de conversion. Le type WsdlImporter utilise les importateurs de stratégie personnalisés (implémentations IPolicyImportExtension) issus de son type parent pour gérer les instructions de stratégie personnalisées et ses propres importateurs WSDL personnalisés (implémentations IWsdlImportExtension) pour gérer les éléments WSDL personnalisés. Pour plus d’informations, consultez Extension du système de métadonnées.
Lors de l'importation d'une stratégie à partir de documents WSDL, le type WsdlImporter essaie jusqu'à 32 combinaisons d'alternatives de stratégie attachées aux différents sujets de stratégie WSDL. Si aucune combinaison n’est correctement importée, la première combinaison est utilisée pour construire une liaison personnalisée partielle.
Outre ces méthodes et ces propriétés, WsdlImporter implémente également des méthodes prenant en charge l’importation des informations et des propriétés de liaison donnant accès aux documents de stratégie, aux documents WSDL, aux extensions WSDL et aux documents de schéma XML. Pour plus d'informations sur l'extension de WsdlImporter afin de prendre en charge les éléments WSDL personnalisés, consultez IWsdlImportExtension.
En règle générale, la classe WsdlImporter est utilisée dans un processus à trois étapes.
Créer un objet WsdlImporter et passer un objet MetadataSet au constructeur.
Appeler la méthode
Import
appropriée pour récupérer les résultats.Consulter la propriété Errors pour vérifier la présence éventuelle d'erreurs d'importation.
Notes
Lors de l'importation de types de port WSDL, si le QName du type de port correspond à une entrée du dictionnaire KnownContracts, le type de port n'est pas importé et le contrat connu est utilisé à la place.
Aucune valeur n'est retournée par les propriétés WsdlImporter jusqu'à ce que l'une des méthodes d'importation soit appelée. Les objets personnalisés System.ServiceModel.Description.IWsdlImportExtension peuvent être chargés par WsdlImporter programmation ou à l’aide de l’élément wsdlImporters> de configuration< du client.
Les métadonnées importées en tant que points de terminaison de service ne peuvent pas servir à créer une exécution ou à exporter des métadonnées, car les points de terminaison importés ne contiennent pas d'informations sur les types managés. Pour utiliser les métadonnées afin de créer une exécution de client ou de service ou de générer des métadonnées, vous devez d'abord générer et compiler le code des métadonnées et utiliser ces informations de type pour créer un objet System.ServiceModel.Description.ContractDescription à l'aide de GetContract.
Constructeurs
WsdlImporter(MetadataSet) |
Initialise une nouvelle instance de la classe WsdlImporter. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
Crée un objet WsdlImporter à partir des métadonnées, des importateurs de stratégie personnalisés et des importateurs WSDL personnalisés spécifiés. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
Crée un objet WsdlImporter à partir des métadonnées, des importateurs de stratégie personnalisés et des importateurs WSDL personnalisés spécifiés. |
Propriétés
Errors |
Obtient une valeur qui indique si des erreurs se sont produites lors de l'importation des métadonnées. (Hérité de MetadataImporter) |
KnownContracts |
Obtient un dictionnaire de contrats par nom que l'importateur connaît. (Hérité de MetadataImporter) |
PolicyImportExtensions |
Obtient une collection d’importateurs de stratégie que l’importateur appelle pour traiter les assertions de stratégie. (Hérité de MetadataImporter) |
State |
Obtient ou définit une collection d’objets utilisés lors de l’importation de métadonnées. (Hérité de MetadataImporter) |
WsdlDocuments |
Obtient un jeu d'objets ServiceDescription qui décrivent les informations de contrat dans les documents de métadonnées. |
WsdlImportExtensions |
Obtient un jeu d'objets IWsdlImportExtension servant à importer des informations WSDL personnalisées. |
XmlSchemas |
Obtient un jeu d'objets XmlSchema qui décrivent les types dans les métadonnées. |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
ImportAllBindings() |
Retourne un jeu d'objets Binding importés à partir des documents de métadonnées. |
ImportAllContracts() |
Retourne un jeu d'objets ContractDescription qui représentent les informations sur les types de port dans les documents de métadonnées. |
ImportAllEndpoints() |
Retourne un ServiceEndpointCollection qui représente les points de terminaison dans les documents WSDL. |
ImportBinding(Binding) |
Retourne un objet Binding qui représente les informations de liaison issues d’un jeu de documents de métadonnées. |
ImportContract(PortType) |
Retourne un objet ContractDescription qui représente les métadonnées localisées par les informations sur le type de port spécifié. |
ImportEndpoint(Port) |
Retourne un ServiceEndpoint issu d'un jeu de documents de métadonnées qui utilise des informations de l'objet Port spécifié. |
ImportEndpoints(Binding) |
Retourne un ServiceEndpointCollection qui représente tous les types de port WSDL qui utilisent le Binding spécifié. |
ImportEndpoints(PortType) |
Retourne un ServiceEndpointCollection qui représente tous les types de port WSDL associés au PortType spécifié. |
ImportEndpoints(Service) |
Retourne un ServiceEndpointCollection qui représente tous les types de port WSDL situés dans le Service spécifié. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |