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 runtime 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 runtime, usando a DynamicMethod classe e execute-os usando delegados.
  • Defina assemblies em runtime e execute-os e/ou salve-os em disco.
  • Defina assemblies em runtime, execute-os e descarrege-os e permita que a coleta de lixo recupere seus recursos.
  • Defina módulos em novos assemblies durante o tempo de execução e, em seguida, execute e/ou salve-os no disco.
  • Defina tipos em módulos em runtime, 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 nas interfaces de metadados (.NET Framework) e interfaces de metadados (.NET). 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.

Reference

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.