Partilhar via


Emitir métodos dinâmicos e montagens

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

A emissão de reflexão fornece as seguintes capacidades:

  • 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, em seguida, execute-os e/ou salve-os em disco.
  • Defina assemblies em tempo de execução, execute-os e, em seguida, descarregue-os e permita que a coleta de lixo recupere seus recursos.
  • Defina módulos em novos assemblies em tempo de execução 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 criadores de perfil 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 de Interfaces de Metadados . A emissão de reflexão gerenciada fornece uma verificação de erros semânticos mais forte e um nível mais alto de abstração dos metadados do que as interfaces de metadados não gerenciados.

Outro recurso útil para trabalhar com metadados e CIL é a documentação da Common Language Infrastructure (CLI), especialmente "Partition II: Metadata Definition and Semantics" e "Partition III: CIL Instruction set". A documentação está disponível on-line no site da 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, assemblies e tipos dinâmicos.

Type
Descreve a Type classe, que representa tipos em reflexão gerenciada e reflexão emitida, e que é fundamental para o uso dessas tecnologias.

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