MetadataImporter Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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) |