WsdlImporter 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 Web Services Description Language (WSDL) 1.1 dengan lampiran WS-Policy.
public ref class WsdlImporter : System::ServiceModel::Description::MetadataImporter
public class WsdlImporter : System.ServiceModel.Description.MetadataImporter
type WsdlImporter = class
inherit MetadataImporter
Public Class WsdlImporter
Inherits MetadataImporter
- Warisan
Contoh
Contoh kode berikut menunjukkan cara menggunakan WsdlImporter untuk menambahkan kustom System.Runtime.Serialization.IDataContractSurrogate, mengimpor semua kontrak, dan mengkompilasi kontrak tersebut dan menyimpannya ke file.
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 kelas untuk mengimpor metadata serta mengonversi informasi tersebut WsdlImporter menjadi berbagai kelas yang mewakili informasi kontrak dan titik akhir.
Kelas dasar untuk WsdlImporter, MetadataImporter kelas , menentukan metode yang secara selektif mengimpor informasi dan properti kontrak dan titik akhir yang mengekspos kesalahan impor apa pun dan menerima informasi jenis yang relevan dengan proses impor dan konversi. Jenis ini WsdlImporter menggunakan importir kebijakan kustom (IPolicyImportExtension implementasi) dari jenis induknya untuk menangani pernyataan kebijakan kustom dan importir WSDL kustomnya sendiri (IWsdlImportExtension implementasi) untuk menangani elemen WSDL kustom. Untuk detailnya, lihat Memperluas Sistem Metadata.
Saat mengimpor kebijakan dari dokumen WSDL, jenisnya WsdlImporter akan mencoba hingga 32 kombinasi alternatif kebijakan yang dilampirkan ke berbagai subjek kebijakan WSDL. Jika tidak ada kombinasi yang dapat diimpor secara bersih, kombinasi pertama digunakan untuk membangun pengikatan khusus parsial.
Selain metode dan properti ini, WsdlImporter juga menerapkan metode yang mendukung impor informasi dan properti pengikatan yang menyediakan akses ke dokumen kebijakan apa pun, dokumen WSDL, ekstensi WSDL, dan dokumen skema XML. Untuk informasi tentang memperluas WsdlImporter untuk mendukung elemen WSDL kustom, lihat IWsdlImportExtension.
WsdlImporter Biasanya kelas digunakan dalam proses tiga langkah.
Buat WsdlImporter objek dan teruskan MetadataSet objek ke konstruktor.
Panggil metode yang sesuai
Importuntuk mengambil hasilnya.Errors Periksa properti untuk menentukan apakah ada kesalahan impor.
Nota
Saat mengimpor jenis port WSDL, jika QName dari jenis port cocok dengan entri dalam KnownContracts kamus maka jenis port tidak diimpor dan kontrak yang diketahui digunakan sebagai gantinya.
Tidak ada nilai yang dikembalikan dari WsdlImporter properti hingga salah satu metode impor dipanggil. Objek kustom System.ServiceModel.Description.IWsdlImportExtension dapat dimuat ke dalam WsdlImporter elemen secara terprogram atau menggunakan konfigurasi <klien wsdlImporters> .
Metadata yang telah diimpor sebagai titik akhir layanan tidak dapat digunakan untuk membuat metadata runtime atau ekspor karena titik akhir yang diimpor tidak berisi informasi jenis terkelola. Untuk menggunakan metadata untuk membuat klien atau runtime layanan atau untuk menghasilkan metadata, Anda harus terlebih dahulu membuat dan mengkompilasi kode dari metadata dan menggunakan informasi jenis tersebut untuk membuat objek baru System.ServiceModel.Description.ContractDescription menggunakan GetContract.
Konstruktor
| Nama | Deskripsi |
|---|---|
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
WsdlImporter Membuat objek dari metadata yang ditentukan, pengimpor kebijakan kustom, dan pengimpor WSDL kustom. |
| WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
WsdlImporter Membuat objek dari metadata yang ditentukan, pengimpor kebijakan kustom, dan pengimpor WSDL kustom. |
| WsdlImporter(MetadataSet) |
Menginisialisasi instans baru dari kelas WsdlImporter. |
Properti
| Nama | Deskripsi |
|---|---|
| Errors |
Mendapatkan nilai yang menunjukkan apakah ada kesalahan saat mengimpor metadata. (Diperoleh dari MetadataImporter) |
| KnownContracts |
Mendapatkan kamus kontrak berdasarkan nama yang diketahui importir. (Diperoleh dari MetadataImporter) |
| PolicyImportExtensions |
Mendapatkan kumpulan importir kebijakan yang dipanggil importir untuk memproses pernyataan kebijakan. (Diperoleh dari MetadataImporter) |
| State |
Mendapatkan atau mengatur kumpulan objek yang digunakan dalam mengimpor metadata. (Diperoleh dari MetadataImporter) |
| WsdlDocuments |
Mendapatkan sekumpulan ServiceDescription objek yang menjelaskan informasi kontrak dalam dokumen metadata. |
| WsdlImportExtensions |
Mendapatkan sekumpulan IWsdlImportExtension objek yang digunakan untuk mengimpor informasi WSDL kustom. |
| XmlSchemas |
Mendapatkan sekumpulan XmlSchema objek yang menjelaskan jenis dalam 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) |
| ImportAllBindings() |
Mengembalikan sekumpulan Binding objek yang diimpor dari dokumen metadata. |
| ImportAllContracts() |
Mengembalikan sekumpulan ContractDescription objek yang mewakili informasi jenis port dalam dokumen metadata. |
| ImportAllEndpoints() |
Mengembalikan ServiceEndpointCollection yang mewakili titik akhir dalam dokumen WSDL. |
| ImportBinding(Binding) |
Mengembalikan Binding objek yang mewakili informasi pengikatan dari sekumpulan dokumen metadata. |
| ImportContract(PortType) |
Mengembalikan ContractDescription objek yang mewakili metadata yang terletak oleh informasi jenis port yang ditentukan. |
| ImportEndpoint(Port) |
Mengembalikan dari sekumpulan ServiceEndpoint dokumen metadata yang menggunakan informasi dari objek yang ditentukan Port . |
| ImportEndpoints(Binding) |
Mengembalikan ServiceEndpointCollection yang mewakili semua jenis port WSDL menggunakan Binding. |
| ImportEndpoints(PortType) |
Mengembalikan ServiceEndpointCollection yang mewakili semua jenis port WSDL yang terkait dengan yang ditentukan PortType. |
| ImportEndpoints(Service) |
Mengembalikan ServiceEndpointCollection yang mewakili semua jenis port WSDL dalam Service. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |