Предоставление динамических методов и сборок
В этом разделе описывается набор управляемых типов, содержащихся в пространстве имен System.Reflection.Emit и позволяющих компилятору или инструментальному средству генерировать метаданные и код на языке MSIL во время выполнения, а при необходимости также создавать на диске переносимые исполняемые файлы (PE). Основными пользователями этого пространства имен являются обработчики скриптов и компиляторы. В данном разделе функциональные возможности, предоставляемые пространством имен System.Reflection.Emit, называют порождением отражения.
Порождение отражения предоставляет следующие возможности:
Определение облегченных глобальных методов во время выполнения с помощью класса DynamicMethod и выполнение этих методов посредством делегатов.
Определение сборок во время выполнения с последующим их запуском или сохранением на диске.
Определение сборок во время выполнения с последующим их запуском, выгрузкой и разрешением сборке мусора получения их ресурсов.
Определение модулей в новых сборках во время выполнения с последующим их запуском или сохранением на диске.
Определение типов в модулях во время выполнения, создание экземпляров этих типов и вызов их методов.
Определение символьной информации для определяемых модулей, которая может использоваться такими инструментами, как отладчики и профилировщики кода.
Помимо управляемых типов в пространстве имен System.Reflection.Emit, существуют неуправляемые интерфейсы метаданных, которые описаны в справочной документации Интерфейсы метаданных. Управляемое порождение отражения обеспечивает более строгую проверку семантических ошибок и более высокий уровень абстрагирования метаданных, чем интерфейсы эмиссии метаданных.
Другим полезным ресурсом для работы с метаданными и MSIL является документация по CLI, особенно раздел II, посвященный определению и семантике метаданных, и раздел III, посвященный набору инструкций CIL. Этот документ доступен в Интернете на веб-узле MSDN и на веб-узле ECMA.
В этом подразделе
Абстракции порождаемого отражения
Перечисление и описания классов порождения отражения, которые можно использовать для определения сборок и типов, методов и параметров методов, событий, конструкторов, свойств и т. д.Собираемые сборки для динамической генерации типа
Описание создания и использования динамических сборок, которые могут быть выгружены и получены сборкой мусора (при условии, что ни один из содержащихся в них типов не достижим для выполняющегося кода).Сценарии динамических методов порождаемого отражения
Описание определения и использования облегченных динамических методов.Сценарии динамических сборок порождаемого отражения
Описание основного сценария порождения отражения, выпуск динамического модуля, определенного в динамической сборке.Сценарии применения порождаемого отражения
Описание сценариев приложения, поддерживаемых порождением отражения, включая выполнение скрипта в веб-обозревателе, выполнение скрипта на странице ASP.NET и компиляцию регулярных выражений.Вопросы безопасности в порождаемом отражении
Обсуждение вопросов безопасности, связанных с созданием динамических сборок с помощью отражательной эмиссии.Использование порождаемого отражения
Описание основных задач, которые можно выполнить с помощью порождения отражения. Также прилагаются практические руководства по созданию упрощенных динамических методов и выпуску универсальных типов и методов.Дополнительные сведения о порождаемого отражения
Описание дополнительной документации, относящейся к порождению отражению.
Ссылка
OpCodes
Каталог кодов инструкций MSIL, которые можно использовать для создания основных частей методов.System.Reflection.Emit
Содержит управляемые классы, используемые для выпуска динамических методов, сборок и типов.Type
Описание класса Type, который представляет типы в управляемом отражении и порождении отражения, а также правило использования этих технологий.System.Reflection
Содержит управляемые классы, используемые для просмотра метаданных и управляемого кода.
Связанные подразделы
Отражение
Объяснение просмотра метаданных и управляемого кода.Сборки в среде CLR
Общий обзор сборок в .NET Framework.