Compartilhar via


Visão geral da API de metadados

Comuns linguagem runtime (CLR) metadados API permite que os metadados do componente a ser acessado sem a necessidade de classe a ser carregado pelo tempo de execução. A API foi projetada especificamente para maximizar o desempenho e minimizar a sobrecarga. O mecanismo de metadados disponibiliza os dados, mas pára de fornecer acesso direto às estruturas de dados na memória. Por outro lado, quando uma classe é carregada em time de execução, o carregador importa os metadados em suas próprias estruturas de dados, você pode navegar usando serviços de reflexão do tempo de execução.

API de metadados pela reflexão Services

Os serviços de reflexão fazem muito mais trabalho que os metadados de API. Por exemplo, eles automaticamente mostre a hierarquia de herança para obter informações sobre campos e métodos herdados. Os metadados API retorna somente o membro direto declarações para uma determinada classe e requer que o cliente da API fazer chamadas adicionais para percorrer a hierarquia e enumerar métodos herdados. A abordagem dos serviços de reflexão expõe um modo de exibição de nível mais alto de metadados, ao passo que a abordagem da API de metadados coloca o cliente de API em controle total de percorrer as estruturas de dados.

Escopo

A qualquer momento, você pode ter várias áreas distintas de memória que contêm metadados. Por exemplo, você pode ter uma área que mapeia todos os metadados de um módulo existente no disco. Ao mesmo time, você pode emitir o metadados em uma área separada que você mais tarde será salva sistema autônomo um módulo em um arquivo.

ObservaçãoObservação:

A palavra módulo aqui significa que um arquivo que contém metadados. Geralmente ele será um .obj, .exe ou arquivo .dll que contém os metadados e o código Microsoft intermediate linguagem (MSIL), mas também pode ser um arquivo que contém apenas os metadados.

Cada área separada de metadados na memória é conhecida sistema autônomo um escopo. Cada escopo corresponde a um módulo. Módulos geralmente são salvos sistema autônomo arquivos no disco, mas isso não é necessário. Por exemplo, ferramentas de scripts freqüentemente geram metadados que nunca é mantido em um arquivo.

O termo escopo é usado, pois ele representa a região em que símbolos de metadados são definidos. Por exemplo, um token de metadados com o valor N identifica detalhes sobre uma definição de classe dentro de um determinado escopo. No entanto, um token de metadados com o mesmo valor de N pode corresponder a um conjunto totalmente diferente de detalhes para um escopo diferente.

Para estabelecer um escopo de metadados na memória, você chama o CComPtrBase::CoCreateInstance método do IMetaDataDispenser interface. Esse método cria um novo escopo ou abre um conjunto de estruturas de metadados existentes a partir de um arquivo ou a memória local. Com cada telefonar para o IMetaDataDispenser::DefineScope or the IMetaDataDispenser::OpenScope método, o chamador especificar qual API para receber:

  • The IMetaDataEmit interface habilita ferramentas para gravar em um escopo de metadados.

  • The IMetaDataImport interface habilita ferramentas para ler de um escopo de metadados.

Verificação de erro

Os metadados API executa um mínimo de verificação de erros semânticos. Os métodos de metadados API assumem as ferramentas e serviços que emitem metadados estão impondo regras do objeto de sistema são descritas no common type system e adicionais que qualquer verificação pelo mecanismo de metadados durante o time de desenvolvimento é supérfluo.

Consulte também

Outros recursos

Visão geral dos metadados