WsdlImporter Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
WS-Policy ekleri olan Web Hizmetleri Açıklama Dili (WSDL) 1.1 meta verilerini içeri aktarır.
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
- Devralma
Örnekler
Aşağıdaki kod örneği, özel System.Runtime.Serialization.IDataContractSurrogatebir eklemek, tüm sözleşmeleri içeri aktarmak ve bu sözleşmeleri derleyip bir dosyaya kaydetmek için öğesinin nasıl kullanılacağını WsdlImporter gösterir.
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();
}
Açıklamalar
WsdlImporter Meta verileri içeri aktarmak ve bu bilgileri sözleşme ve uç nokta bilgilerini temsil eden çeşitli sınıflara dönüştürmek için sınıfını kullanın.
için WsdlImporterMetadataImporter temel sınıfı, içeri aktarma hatalarını ortaya çıkaran ve içeri aktarma ve dönüştürme işlemiyle ilgili tür bilgilerini kabul eden sözleşme ve uç nokta bilgilerini ve özellikleri seçmeli olarak içeri aktaran yöntemleri tanımlar. Türü, WsdlImporter özel ilkeIPolicyImportExtension deyimlerini ve özel WSDL öğelerini işlemek için kendi özel WSDL içeri aktarıcılarını (uygulamaları) işlemek için üst türünden özel ilke içeri aktarıcılarını (IWsdlImportExtension uygulamalar) kullanır. Ayrıntılar için bkz. Meta Veri Sistemini Genişletme.
WSDL belgelerinden ilke içeri aktarılırken, tür farklı WsdlImporter WSDL ilkesi konularına eklenmiş en fazla 32 ilke alternatifi bileşimini dener. Hiçbir birleşim düzgün bir şekilde içeri aktarılmıyorsa, kısmi bir özel bağlama oluşturmak için ilk birleşim kullanılır.
Bu yöntemlere ve özelliklere ek olarak, tüm ilke belgelerine, WsdlImporter WSDL belgelerine, WSDL uzantılarına ve XML şema belgelerine erişim sağlayan bağlama bilgilerini ve özelliklerini içeri aktarmayı destekleyen yöntemler de uygular. Özel WSDL öğelerini destekleyecek şekilde genişletme WsdlImporter hakkında bilgi için bkz IWsdlImportExtension. .
WsdlImporter Genellikle sınıfı üç adımlı bir işlemde kullanılır.
Bir WsdlImporter nesne oluşturun ve bir MetadataSet nesneyi oluşturucuya geçirin.
Sonuçları almak için uygun
Import
yöntemi çağırın.Errors İçeri aktarma hatası olup olmadığını belirlemek için özelliğini denetleyin.
Not
WSDL bağlantı noktası türlerini içeri aktarırken, bağlantı noktası türünün QName değeri sözlükteki KnownContracts bir girişle eşleşiyorsa, bağlantı noktası türü içeri aktarılmaz ve bunun yerine bilinen sözleşme kullanılır.
İçeri aktarma yöntemlerinden biri çağrılana WsdlImporter kadar özelliklerden hiçbir değer döndürülmedi. Özel System.ServiceModel.Description.IWsdlImportExtension nesneler program aracılığıyla veya istemci yapılandırması <wsdlImporters> öğesi kullanılarak yüklenebilirWsdlImporter.
İçeri aktarılan uç noktalar yönetilen tür bilgisi içermediğinden, hizmet uç noktaları olarak içeri aktarılan meta veriler çalışma zamanı oluşturmak veya meta verileri dışarı aktarmak için kullanılamaz. Meta verileri kullanarak bir istemci veya hizmet çalışma zamanı oluşturmak veya meta veri oluşturmak için, önce meta verilerden kod oluşturup derlemeniz ve kullanarak GetContractyeni System.ServiceModel.Description.ContractDescription bir nesne oluşturmak için bu tür bilgileri kullanmanız gerekir.
Oluşturucular
WsdlImporter(MetadataSet) |
WsdlImporter sınıfının yeni bir örneğini başlatır. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>) |
Belirtilen meta verilerden, özel ilke içeri aktarıcılarından ve özel WSDL içeri aktarıcılarından bir WsdlImporter nesne oluşturur. |
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas) |
Belirtilen meta verilerden, özel ilke içeri aktarıcılarından ve özel WSDL içeri aktarıcılarından bir WsdlImporter nesne oluşturur. |
Özellikler
Errors |
Meta verileri içeri aktarırken hata olup olmadığını gösteren bir değer alır. (Devralındığı yer: MetadataImporter) |
KnownContracts |
İçeri aktarıcının bildiği ada göre sözleşmeler sözlüğü alır. (Devralındığı yer: MetadataImporter) |
PolicyImportExtensions |
İçeri aktarıcının ilke onaylarını işlemek için çağıran ilke içeri aktarıcıları koleksiyonunu alır. (Devralındığı yer: MetadataImporter) |
State |
Meta verilerin içeri aktarılmasında kullanılan nesne koleksiyonunu alır veya ayarlar. (Devralındığı yer: MetadataImporter) |
WsdlDocuments |
Meta veri belgelerindeki sözleşme bilgilerini açıklayan bir nesne kümesi ServiceDescription alır. |
WsdlImportExtensions |
Özel WSDL bilgilerini içeri aktarmak için kullanılan bir nesne kümesini IWsdlImportExtension alır. |
XmlSchemas |
Meta verilerdeki türleri açıklayan bir nesne kümesi XmlSchema alır. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
ImportAllBindings() |
Meta veri belgelerinden içeri aktarılan bir nesne kümesi Binding döndürür. |
ImportAllContracts() |
Meta veri belgelerindeki ContractDescription bağlantı noktası türü bilgilerini temsil eden bir nesne kümesi döndürür. |
ImportAllEndpoints() |
WSDL belgelerindeki uç noktaları temsil eden bir ServiceEndpointCollection döndürür. |
ImportBinding(Binding) |
Bir Binding dizi meta veri belgesinden gelen bağlama bilgilerini temsil eden bir nesne döndürür. |
ImportContract(PortType) |
Belirtilen bağlantı noktası türü bilgileri tarafından bulunan meta verileri temsil eden bir ContractDescription nesne döndürür. |
ImportEndpoint(Port) |
Belirtilen Port nesnedeki bilgileri kullanan bir dizi meta veri belgesinden bir ServiceEndpoint döndürür. |
ImportEndpoints(Binding) |
Belirtilen Bindingkullanarak tüm WSDL bağlantı noktası türlerini temsil eden bir ServiceEndpointCollection döndürür. |
ImportEndpoints(PortType) |
Belirtilen PortTypeile ilişkili tüm WSDL bağlantı noktası türlerini temsil eden bir ServiceEndpointCollection döndürür. |
ImportEndpoints(Service) |
Belirtilen Serviceiçindeki tüm WSDL bağlantı noktası türlerini temsil eden bir ServiceEndpointCollection döndürür. |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |