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

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

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

  • Определение облегченных глобальных методов во время выполнения с помощью класса DynamicMethod и выполнение этих методов посредством делегатов.

  • Определение сборок во время выполнения с последующим их запуском или сохранением на диске.

  • Определение сборок во время выполнения с последующим их запуском, выгрузкой и разрешением сборке мусора получения их ресурсов.

  • Определение модулей в новых сборках во время выполнения с последующим их запуском или сохранением на диске.

  • Определение типов в модулях во время выполнения, создание экземпляров этих типов и вызов их методов.

  • Определение символьной информации для определяемых модулей, которая может использоваться такими инструментами, как отладчики и профилировщики кода.

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

Другим полезным ресурсом для работы с метаданными и MSIL является документация по CLI, особенно раздел II, посвященный определению и семантике метаданных, и раздел III, посвященный набору инструкций CIL. Этот документ доступен в Интернете на веб-узле MSDN и на веб-узле ECMA.

В этом подразделе

Ссылка

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

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

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

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

Связанные подразделы