MetadataImporter Klass

Definition

Importerar metadata till ServiceEndpoint objekt.

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Arv
MetadataImporter
Härledda

Exempel

I följande exempel visas användningen av den System.ServiceModel.Description.WsdlImporter härledda klassen för att importera metadata med anpassat tillstånd, kontrollera Errors egenskapen, kompilera importerade metadata till hanterade typer och spara resultatet i en kodfil.

  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

Använd en implementering av den MetadataImporter abstrakta klassen för att importera tjänstmetadata. Typer som härleds från klassen MetadataImporter implementerar stöd för import av metadataformat som utnyttjar WS-Policy importlogik i Windows Communication Foundation (WCF).

En MetadataImporter implementering samlar in de principuttryck som är kopplade till tjänstens metadata i ett System.ServiceModel.Description.PolicyConversionContext objekt. MetadataImporter bearbetar policyerna som en del av att importera metadatan genom att anropa implementationerna av System.ServiceModel.Description.IPolicyImportExtension-gränssnittet i MetadataImporter.PolicyImportExtensions-egenskapen.

Du kan lägga till stöd för att importera nya principkontroller till en MetadataImporter genom att lägga till din egen implementering av System.ServiceModel.Description.IPolicyImportExtension gränssnittet i MetadataImporter.PolicyImportExtensions egenskapen på en MetadataImporter instans. Du kan också registrera ditt principimporttillägg i programkonfigurationsfilen.

Typen System.ServiceModel.Description.WsdlImporter är implementeringen av den MetadataImporter abstrakta klass som ingår i WCF. Typen System.ServiceModel.Description.WsdlImporter importerar WSDL-metadata med anslutna principer som paketeras i ett System.ServiceModel.Description.MetadataSet objekt.

Du kan lägga till stöd för att importera WSDL-tillägg genom att implementera System.ServiceModel.Description.IWsdlImportExtension gränssnittet och sedan lägga till implementeringen i WsdlImporter.WsdlImportExtensions egenskapen på din System.ServiceModel.Description.WsdlImporter instans. System.ServiceModel.Description.WsdlImporter kan också läsa in implementeringar av System.ServiceModel.Description.IWsdlImportExtension-gränssnittet som registreras i din programkonfigurationsfil.

Note

MetadataImporter Eftersom konstruktorn är intern kan du inte härleda från MetadataImporter i den här versionen.

Egenskaper

Name Description
Errors

Hämtar ett värde som anger om det uppstod fel vid import av metadata.

KnownContracts

Hämtar en ordlista med kontrakt efter namn som importören känner till.

PolicyImportExtensions

Hämtar en samling principimportörer som importören anropar för att bearbeta principkontroller.

State

Hämtar eller anger en samling objekt som används vid import av 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)
ImportAllContracts()

När det åsidosättas i en härledd klass returnerar en samling kontrakt som importerats från metadata.

ImportAllEndpoints()

När åsidosättas i en härledd klass returnerar alla slutpunkter i metadata.

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)

Gäller för