MetadataImporter Classe

Définition

Importe des métadonnées dans des objets ServiceEndpoint.

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Héritage
MetadataImporter
Dérivé

Exemples

L'exemple suivant indique l'utilisation de la classe dérivée System.ServiceModel.Description.WsdlImporter pour importer des métadonnées à l'aide de l'état personnalisé, en vérifiant la propriété Errors, en compilant les métadonnées importées dans des types managés et en enregistrant le résultat dans un fichier de code.

  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 une implémentation de la classe abstraite MetadataImporter pour importer des métadonnées de service. Les types qui dérivent de la classe implémentent la MetadataImporter prise en charge de l’importation de formats de métadonnées qui tirent parti de la logique d’importation WS-Policy dans Windows Communication Foundation (WCF).

Une implémentation MetadataImporter recueille les expressions de stratégie attachées aux métadonnées de service dans un objet System.ServiceModel.Description.PolicyConversionContext. Le MetadataImporter traite ensuite les stratégies dans le cadre de l'importation des métadonnées en appelant les implémentations de l'interface System.ServiceModel.Description.IPolicyImportExtension dans la propriété MetadataImporter.PolicyImportExtensions.

Vous pouvez ajouter la prise en charge de l'importation de nouvelles assertions de stratégie vers MetadataImporter en ajoutant votre propre implémentation de l'interface System.ServiceModel.Description.IPolicyImportExtension à la propriété MetadataImporter.PolicyImportExtensions dans une instance MetadataImporter. Vous pouvez également inscrire votre extension d’importation de stratégie dans votre fichier de configuration de l’application.

Le type System.ServiceModel.Description.WsdlImporter est l’implémentation de la classe abstraite MetadataImporter incluse dans WCF. Le type System.ServiceModel.Description.WsdlImporter importe des métadonnées WSDL avec les stratégies attachées fournies dans un objet System.ServiceModel.Description.MetadataSet.

Vous pouvez ajouter la prise en charge pour importer des extensions WSDL en implémentant l’interface System.ServiceModel.Description.IWsdlImportExtension et en ajoutant ensuite votre implémentation à la propriété WsdlImporter.WsdlImportExtensions sur votre instance System.ServiceModel.Description.WsdlImporter. Le System.ServiceModel.Description.WsdlImporter peut également charger des implémentations de l'interface System.ServiceModel.Description.IWsdlImportExtension inscrite dans votre fichier de configuration d'application.

Notes

Le constructeur MetadataImporter étant interne, vous ne pouvez pas dériver à partir de MetadataImporter dans cette version.

Propriétés

Errors

Obtient une valeur qui indique si des erreurs se sont produites lors de l'importation des métadonnées.

KnownContracts

Obtient un dictionnaire de contrats par nom que l'importateur connaît.

PolicyImportExtensions

Obtient une collection d’importateurs de stratégie que l’importateur appelle pour traiter les assertions de stratégie.

State

Obtient ou définit une collection d’objets utilisés lors de l’importation de 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)
ImportAllContracts()

En cas de substitution dans une classe dérivée, retourne une collection de contrats importés à partir des métadonnées.

ImportAllEndpoints()

En cas de substitution dans une classe dérivée, retourne tous les points de terminaison dans les métadonnées.

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)

S’applique à