Предоставление динамических методов и сборок

В этом разделе описывается набор управляемых типов в System.Reflection.Emit пространстве имен, позволяющий компилятору или инструменту выдавать метаданные и общий промежуточный язык (CIL) во время выполнения и при необходимости создавать переносимый исполняемый файл (PE) на диске. Основными пользователями этого пространства имен являются обработчики скриптов и компиляторы. В этом разделе функциональные возможности, предоставляемые System.Reflection.Emit пространством имен, называются отражением.

Порождение отражения предоставляет следующие возможности:

  • определение облегченных глобальных методов во время выполнения с помощью класса DynamicMethod и их выполнение с помощью делегатов;
  • определение сборок во время выполнения и последующий их запуск или сохранение на диск;
  • определение сборок во время выполнения с последующим их запуском, выгрузкой и предоставлением сборке мусора разрешения на получение их ресурсов;
  • определение модулей в новых сборках во время выполнения с последующим их запуском или сохранением на диске;
  • определение типов в модулях во время выполнения, создание экземпляров этих типов и вызов их методов;
  • определение символьной информации для определяемых модулей, которая может использоваться такими средствами, как отладчики и профилировщики кода.

Помимо управляемых типов в System.Reflection.Emit пространстве имен существуют неуправляемые интерфейсы метаданных, описанные в справочной документации по интерфейсам метаданных . Управляемое порождение отражения обеспечивает более строгую проверку семантических ошибок и более высокий уровень абстрагирования метаданных, чем неуправляемые интерфейсы метаданных.

Другим полезным ресурсом для работы с метаданными и CIL является документация по инфраструктуре общего языка (CLI), особенно "Раздел II: определение метаданных и семантика" и "Набор инструкций CIL" секции III. Документация доступна в Интернете на веб-сайте Ecma.

Справочные материалы

OpCodes
Каталогит коды инструкций CIL, которые можно использовать для создания тел методов.

System.Reflection.Emit
Содержит управляемые классы, используемые для порождения динамических методов, сборок и типов.

Type
Описывается класс Type, который представляет типы в управляемом отражении и порождении отражения и является ключевым элементом при использовании этих технологий.

System.Reflection
Содержит управляемые классы, используемые для просмотра метаданных и управляемого кода.