Compartilhar via


Emissão de métodos e assemblies dinâmicos

Esta seção descreve um conjunto de tipos gerenciados no System.Reflection.Emit namespace que permitem que um compilador ou ferramenta emita metadados e CIL (common intermediate Language) em tempo de execução e, opcionalmente, gere um arquivo PE (executável portátil) no disco. Os mecanismos de script e os compiladores são os principais usuários desse namespace. Nesta seção, a funcionalidade fornecida pelo System.Reflection.Emit namespace é conhecida como emissão de reflexão.

A emissão de reflexão fornece os seguintes recursos:

  • Defina métodos globais leves em tempo de execução, usando a DynamicMethod classe e execute-os usando delegados.
  • Defina assemblies em tempo de execução e execute-os e/ou salve-os em disco.
  • Defina os assemblies no tempo de execução, execute-os, descarregue-os e permita que a coleta de lixo recupere seus recursos.
  • Defina, em tempo de execução, módulos em novos assemblies e, em seguida, execute-os e/ou salve-os em disco.
  • Defina tipos em módulos em tempo de execução, crie instâncias desses tipos e invoque seus métodos.
  • Defina informações simbólicas para módulos definidos que podem ser usados por ferramentas como depuradores e perfiladores de código.

Além dos tipos gerenciados no System.Reflection.Emit namespace, há interfaces de metadados não gerenciadas descritas na documentação de referência das Interfaces de Metadados . A emissão de reflexão gerenciada fornece uma verificação de erro semântica mais forte e um nível mais alto de abstração dos metadados do que as interfaces de metadados não gerenciadas.

Outro recurso útil para trabalhar com metadados e CIL é a documentação da CLI (Common Language Infrastructure), especialmente "Partition II: Metadata Definition and Semmantics" e "Partition III: CIL Instruction Set". A documentação está disponível online no site do Ecma.

Referência

OpCodes
Cataloga os códigos de instrução CIL que você pode usar para criar corpos de método.

System.Reflection.Emit
Contém classes gerenciadas usadas para emitir métodos dinâmicos, assemblies e tipos.

Type
Descreve a classe Type, que representa os tipos de reflexão gerenciada e emissão de reflexão, e qual é a chave para o uso dessas tecnologias.

System.Reflection
Contém classes gerenciadas usadas para explorar metadados e código gerenciado.