Emitir métodos y ensamblados dinámicos

En esta sección se describe un conjunto de tipos administrados del espacio de nombres System.Reflection.Emit que permite a un compilador o una herramienta emitir metadatos y el lenguaje Intermedio común (CIL) en tiempo de ejecución y, opcionalmente, generar un archivo portable ejecutable (PE) en el disco. Los motores de scripts y los compiladores son los principales usuarios de este espacio de nombres. En esta sección, la funcionalidad proporcionada por el espacio de nombres System.Reflection.Emit se conoce como emisión de reflexión.

La emisión de la reflexión permite lo siguiente:

  • Definir métodos globales ligeros en tiempo de ejecución, usando la clase DynamicMethod, y ejecutarlos usando delegados.
  • Definir ensamblados en tiempo de ejecución y, después, ejecutarlos o guardarlos en el disco.
  • Definir ensamblados en tiempo de ejecución, ejecutarlos y, después, descargarlos y permitir la recolección de elementos no utilizados para reclamar sus recursos.
  • Definir módulos en nuevos ensamblados en tiempo de ejecución y, después, ejecutarlos o guardarlos en el disco.
  • Definir tipos en módulos en tiempo de ejecución, crear instancias de estos tipos y llamar a sus métodos.
  • Definir información simbólica para módulos definidos que puedan usar herramientas como depuradores y generadores de perfiles de código.

Además de los tipos administrados del espacio de nombres System.Reflection.Emit, hay interfaces de metadatos no administradas que se describen en la documentación de referencia Interfaces de metadatos. La emisión de reflexión administrada proporciona una comprobación más estricta de los errores semánticos y un mayor nivel de abstracción de los metadatos que las interfaces de metadatos no administradas.

Otro recurso útil para trabajar con metadatos y CIL es la documentación de Common Language Infrastructure (CLI), especialmente la sección II sobre la definición y la semántica de los metadatos y la partición III sobre el conjunto de instrucciones de CIL. La documentación está disponible en línea en el sitio web de Ecma.

Referencia

OpCodes
Cataloga los códigos de instrucción de CIL que puede usar para compilar cuerpos de método.

System.Reflection.Emit
Contiene clases administradas usadas para emitir ensamblados, tipos y métodos dinámicos.

Type
Describe la clase Type, que representa los tipos en reflexión administrada y emisión de la reflexión, y que es clave para el uso de estas tecnologías.

System.Reflection
Contiene clases administradas usadas para explorar metadatos y código administrado.