Aracılığıyla paylaş


MetadataImporter Sınıf

Tanım

Meta verileri nesnelere aktarır ServiceEndpoint .

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Devralma
MetadataImporter
Türetilmiş

Örnekler

Aşağıdaki örnekte, özel durum kullanarak meta verileri içeri aktarmak için türetilmiş sınıfın System.ServiceModel.Description.WsdlImporter kullanımı, özelliğin Errors denetlendiği, içeri aktarılan meta verilerin yönetilen türlere derlendiği ve sonucun bir kod dosyasına kaydedildiği gösterilmektedir.

  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

Hizmet meta verilerini içeri aktarmak için soyut sınıfın MetadataImporter bir uygulamasını kullanın. sınıfından MetadataImporter türetilen türler, Windows Communication Foundation'daki (WCF) WS-Policy içeri aktarma mantığından yararlanan meta veri biçimlerini içeri aktarma desteği uygular.

Bir MetadataImporter uygulama, bir System.ServiceModel.Description.PolicyConversionContext nesnedeki hizmet meta verilerine eklenen ilke ifadelerini toplar. Bu MetadataImporter, System.ServiceModel.Description.IPolicyImportExtension özellik içindeki MetadataImporter.PolicyImportExtensions arabiriminin uygulamalarını çağırarak meta verileri içeri aktarma işleminin bir parçası olarak ilkeleri işler.

Bir örnekteki özelliğine MetadataImporterMetadataImporter kendi arabirimi uygulamanızı System.ServiceModel.Description.IPolicyImportExtension ekleyerek yeni ilke onaylarını 'a MetadataImporter.PolicyImportExtensions içeri aktarma desteği ekleyebilirsiniz. Alternatif olarak, ilke içeri aktarma uzantınızı uygulama yapılandırma dosyanıza kaydedebilirsiniz.

türü System.ServiceModel.Description.WsdlImporter , WCF ile birlikte gelen soyut sınıfın MetadataImporter uygulamasıdır. System.ServiceModel.Description.WsdlImporter türü, System.ServiceModel.Description.MetadataSet nesnede paketlenmiş olan ekli ilkelerle WSDL meta verilerini içeri aktarır.

Arabirimi uygulayarak ve ardından uygulamanızı örneğinizdeki System.ServiceModel.Description.IWsdlImportExtension özelliğine ekleyerek WsdlImporter.WsdlImportExtensions üzerinde WSDL uzantılarını içeri aktarma desteği ekleyebilirsiniz. System.ServiceModel.Description.WsdlImporter ayrıca uygulama yapılandırma dosyanızda kayıtlı System.ServiceModel.Description.IWsdlImportExtension arabiriminin uygulamalarını da yükleyebilir.

Uyarı

MetadataImporter Oluşturucu iç olduğundan, bu sürümde öğesini MetadataImporter türetemezsiniz.

Özellikler

Name Description
Errors

Meta verileri içeri aktarırken hata olup olmadığını gösteren bir değer alır.

KnownContracts

İçeri aktarıcının bildiği ada göre sözleşmeler sözlüğü alır.

PolicyImportExtensions

İçeri aktarıcının ilke onaylarını işlemek için çağıran ilke içeri aktarıcıları koleksiyonunu alır.

State

Meta verilerin içeri aktarılmasında kullanılan bir nesne koleksiyonunu alır veya ayarlar.

Yöntemler

Name Description
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()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
ImportAllContracts()

Türetilmiş bir sınıfta geçersiz kılındığında, meta verilerden içeri aktarılan sözleşmelerden oluşan bir koleksiyon döndürür.

ImportAllEndpoints()

Türetilmiş bir sınıfta geçersiz kılındığında, meta verilerdeki tüm uç noktaları döndürür.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır