Partilhar via


MetadataImporter Classe

Definição

Importa os metadados em objetos ServiceEndpoint.

public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
Herança
MetadataImporter
Derivado

Exemplos

O exemplo a seguir mostra o uso da System.ServiceModel.Description.WsdlImporter classe derivada para importar metadados usando o estado personalizado, verificando a Errors propriedade, compilando metadados importados para tipos gerenciados e salvando o resultado em um arquivo de código.

  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();
  }

Comentários

Use uma implementação da MetadataImporter classe abstrata para importar metadados de serviço. Os tipos que derivam da classe implementam suporte MetadataImporter para importar formatos de metadados que aproveitam a lógica de importação WS-Policy no WCF (Windows Communication Foundation).

Uma MetadataImporter implementação coleta as expressões de política anexadas aos metadados de serviço em um System.ServiceModel.Description.PolicyConversionContext objeto. Em MetadataImporter seguida, processa as políticas como parte da importação dos metadados chamando as implementações da System.ServiceModel.Description.IPolicyImportExtension interface na MetadataImporter.PolicyImportExtensions propriedade.

Você pode adicionar suporte para importar novas declarações de política a um MetadataImporter adicionando sua própria implementação da System.ServiceModel.Description.IPolicyImportExtension interface à MetadataImporter.PolicyImportExtensions propriedade em uma MetadataImporter instância. Como alternativa, você pode registrar sua extensão de importação de política no arquivo de configuração do aplicativo.

O System.ServiceModel.Description.WsdlImporter tipo é a implementação da MetadataImporter classe abstrata incluída no WCF. O System.ServiceModel.Description.WsdlImporter tipo importa metadados WSDL com políticas anexadas que são agrupadas em um System.ServiceModel.Description.MetadataSet objeto.

Você pode adicionar suporte para importar extensões WSDL implementando a System.ServiceModel.Description.IWsdlImportExtension interface e adicionando sua implementação à WsdlImporter.WsdlImportExtensions propriedade em sua System.ServiceModel.Description.WsdlImporter instância. Também System.ServiceModel.Description.WsdlImporter é possível carregar implementações da System.ServiceModel.Description.IWsdlImportExtension interface registrada no arquivo de configuração do aplicativo.

Observação

Como o MetadataImporter construtor é interno, você não pode derivar MetadataImporter nesta versão.

Propriedades

Errors

Obtém um valor que indica se houve erros ao importar os metadados.

KnownContracts

Obtém um dicionário de contratos pelo nome que o importador conhece.

PolicyImportExtensions

Obtém uma coleção de importadores de políticas que o importador chama para processar declarações de política.

State

Obtém ou define uma coleção de objetos usados na importação de metadados.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
ImportAllContracts()

Quando substituído em uma classe derivada, retorna uma coleção de contratos importados dos metadados.

ImportAllEndpoints()

Quando substituído em uma classe derivada, retorna todos os pontos de extremidade nos metadados.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a