Bagikan melalui


WsdlImporter Kelas

Definisi

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
WsdlImporter

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.

  1. Buat WsdlImporter objek dan teruskan MetadataSet objek ke konstruktor.

  2. Panggil metode yang sesuai Import untuk mengambil hasilnya.

  3. 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)

Berlaku untuk