MetadataImporter Klas

Definitie

Hiermee importeert u metagegevens in ServiceEndpoint objecten.

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Overname
MetadataImporter
Afgeleid

Voorbeelden

In het volgende voorbeeld ziet u het gebruik van de System.ServiceModel.Description.WsdlImporter afgeleide klasse voor het importeren van metagegevens met behulp van een aangepaste status, het controleren van de Errors eigenschap, het compileren van geïmporteerde metagegevens naar beheerde typen en het resultaat opslaan in een codebestand.

  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 een implementatie van de MetadataImporter abstracte klasse om servicemetagegevens te importeren. Typen die zijn afgeleid van de klasse MetadataImporter implementeren ondersteuning voor het importeren van metagegevensindelingen die profiteren van de WS-Policy importlogica in Windows Communication Foundation (WCF).

Een MetadataImporter implementatie verzamelt de beleidsexpressies die zijn gekoppeld aan de metagegevens van de service in een System.ServiceModel.Description.PolicyConversionContext object. MetadataImporter verwerkt vervolgens de beleidsregels als onderdeel van het importeren van de metagegevens door de implementaties van de System.ServiceModel.Description.IPolicyImportExtension interface binnen de MetadataImporter.PolicyImportExtensions eigenschap aan te roepen.

U kunt ondersteuning toevoegen voor het importeren van nieuwe beleidsverklaringen aan een MetadataImporter door uw eigen implementatie van de System.ServiceModel.Description.IPolicyImportExtension interface toe te voegen aan de MetadataImporter.PolicyImportExtensions eigenschap op een MetadataImporter exemplaar. U kunt ook uw beleidsimportextensie registreren in uw toepassingsconfiguratiebestand.

Het System.ServiceModel.Description.WsdlImporter type is de implementatie van de MetadataImporter abstracte klasse die is opgenomen in WCF. Met het System.ServiceModel.Description.WsdlImporter type worden WSDL-metagegevens geïmporteerd met gekoppelde beleidsregels die zijn gebundeld in een System.ServiceModel.Description.MetadataSet object.

U kunt ondersteuning toevoegen voor het importeren van WSDL-extensies door de System.ServiceModel.Description.IWsdlImportExtension interface te implementeren en vervolgens uw implementatie toe te voegen aan de WsdlImporter.WsdlImportExtensions eigenschap op uw System.ServiceModel.Description.WsdlImporter exemplaar. Je System.ServiceModel.Description.WsdlImporter kunt ook implementaties laden van de System.ServiceModel.Description.IWsdlImportExtension interface die geregistreerd zijn in je applicatieconfiguratiebestand.

Note

Omdat de MetadataImporter constructor intern is, kunt u niet afleiden uit MetadataImporter deze versie.

Eigenschappen

Name Description
Errors

Hiermee wordt een waarde opgehaald die aangeeft of er fouten zijn opgetreden bij het importeren van de metagegevens.

KnownContracts

Hiermee haalt u een woordenlijst met contracten op naam op waarvan de importeur weet.

PolicyImportExtensions

Hiermee haalt u een verzameling beleidsimporteurs op die de importeur aanroept om beleidsverklaringen te verwerken.

State

Hiermee haalt u een verzameling objecten op die worden gebruikt bij het importeren van metagegevens.

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)
ImportAllContracts()

Wanneer deze worden overschreven in een afgeleide klasse, wordt een verzameling contracten geretourneerd die zijn geïmporteerd uit de metagegevens.

ImportAllEndpoints()

Wanneer deze worden overschreven in een afgeleide klasse, worden alle eindpunten in de metagegevens geretourneerd.

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)

Van toepassing op