MetadataImporter Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengimpor metadata ke dalam ServiceEndpoint objek.
public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
- Warisan
-
MetadataImporter
- Turunan
Contoh
Contoh berikut menunjukkan penggunaan kelas turunan System.ServiceModel.Description.WsdlImporter untuk mengimpor metadata menggunakan status kustom, memeriksa Errors properti, mengkompilasi metadata yang diimpor ke jenis terkelola dan menyimpan hasilnya ke file kode.
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();
}
Keterangan
Gunakan implementasi MetadataImporter kelas abstrak untuk mengimpor metadata layanan. Jenis yang berasal dari MetadataImporter kelas menerapkan dukungan untuk mengimpor format metadata yang memanfaatkan logika impor WS-Policy di Windows Communication Foundation (WCF).
Implementasi MetadataImporter mengumpulkan ekspresi kebijakan yang terlampir pada metadata layanan ke dalam objek System.ServiceModel.Description.PolicyConversionContext. Kemudian MetadataImporter memproses kebijakan sebagai bagian dari mengimpor metadata dengan memanggil implementasi System.ServiceModel.Description.IPolicyImportExtension antarmuka di MetadataImporter.PolicyImportExtensions properti.
Anda dapat menambahkan dukungan untuk mengimpor pernyataan kebijakan baru ke dengan MetadataImporter menambahkan implementasi System.ServiceModel.Description.IPolicyImportExtension antarmuka Anda sendiri ke MetadataImporter.PolicyImportExtensions properti pada MetadataImporter instans. Atau, Anda dapat mendaftarkan ekstensi impor kebijakan dalam file konfigurasi aplikasi Anda.
Tipe System.ServiceModel.Description.WsdlImporter ini merupakan implementasi dari kelas MetadataImporter abstrak yang disertakan dengan WCF. Tipe System.ServiceModel.Description.WsdlImporter mengimpor metadata WSDL dengan kebijakan terlampir yang dibundel dalam objek System.ServiceModel.Description.MetadataSet.
Anda dapat menambahkan dukungan untuk mengimpor ekstensi WSDL dengan mengimplementasikan System.ServiceModel.Description.IWsdlImportExtension antarmuka lalu menambahkan implementasi Anda ke WsdlImporter.WsdlImportExtensions properti pada instans Anda System.ServiceModel.Description.WsdlImporter . System.ServiceModel.Description.WsdlImporter juga dapat memuat implementasi antarmuka System.ServiceModel.Description.IWsdlImportExtension yang telah terdaftar dalam file konfigurasi aplikasi Anda.
Nota
MetadataImporter Karena konstruktor bersifat internal, Anda tidak dapat memperoleh dari MetadataImporter dalam versi ini.
Properti
| Nama | Deskripsi |
|---|---|
| Errors |
Mendapatkan nilai yang menunjukkan apakah ada kesalahan saat mengimpor metadata. |
| KnownContracts |
Mendapatkan kamus kontrak berdasarkan nama yang diketahui importir. |
| PolicyImportExtensions |
Mendapatkan kumpulan importir kebijakan yang dipanggil importir untuk memproses pernyataan kebijakan. |
| State |
Mendapatkan atau mengatur kumpulan objek yang digunakan dalam mengimpor metadata. |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| ImportAllContracts() |
Saat ditimpa di kelas turunan, mengembalikan kumpulan kontrak yang diimpor dari metadata. |
| ImportAllEndpoints() |
Saat ditimpa di kelas turunan, mengembalikan semua titik akhir dalam metadata. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |