Предоставление динамических методов и сборокEmitting Dynamic Methods and Assemblies

В этом разделе описывается набор управляемых типов в пространстве имен System.Reflection.Emit, позволяющий компилятору или средству порождать метаданные и код MSIL во время выполнения, а также при необходимости создавать переносимый исполняемый (PE) файл на диске.This section describes a set of managed types in the System.Reflection.Emit namespace that allow a compiler or tool to emit metadata and Microsoft intermediate language (MSIL) at run time and optionally generate a portable executable (PE) file on disk. Основными пользователями этого пространства имен являются обработчики скриптов и компиляторы.Script engines and compilers are the primary users of this namespace. В этом разделе функциональные возможности, предоставляемые пространством имен System.Reflection.Emit, называются порождением отражения.In this section, the functionality provided by the System.Reflection.Emit namespace is referred to as reflection emit.

Порождение отражения предоставляет следующие возможности:Reflection emit provides the following capabilities:

  • определение облегченных глобальных методов во время выполнения с помощью класса DynamicMethod и их выполнение с помощью делегатов;Define lightweight global methods at run time, using the DynamicMethod class, and execute them using delegates.

  • определение сборок во время выполнения и последующий их запуск или сохранение на диск;Define assemblies at run time and then run them and/or save them to disk.

  • определение сборок во время выполнения с последующим их запуском, выгрузкой и предоставлением сборке мусора разрешения на получение их ресурсов;Define assemblies at run time, run them, and then unload them and allow garbage collection to reclaim their resources.

  • определение модулей в новых сборках во время выполнения с последующим их запуском или сохранением на диске;Define modules in new assemblies at run time and then run and/or save them to disk.

  • определение типов в модулях во время выполнения, создание экземпляров этих типов и вызов их методов;Define types in modules at run time, create instances of these types, and invoke their methods.

  • определение символьной информации для определяемых модулей, которая может использоваться такими средствами, как отладчики и профилировщики кода.Define symbolic information for defined modules that can be used by tools such as debuggers and code profilers.

Наряду с управляемыми типами в пространстве имен System.Reflection.Emit существуют неуправляемые интерфейсы метаданных, которые описаны в статье Интерфейсы метаданных справочной документации.In addition to the managed types in the System.Reflection.Emit namespace, there are unmanaged metadata interfaces which are described in the Metadata Interfaces reference documentation. Управляемое порождение отражения обеспечивает более строгую проверку семантических ошибок и более высокий уровень абстрагирования метаданных, чем неуправляемые интерфейсы метаданных.Managed reflection emit provides stronger semantic error checking and a higher level of abstraction of the metadata than the unmanaged metadata interfaces.

Другим полезным ресурсом для работы с метаданными и кодом MSIL является документация по инфраструктуре Common Language Infrastructure (CLI), особенно раздел II, посвященный определению и семантике метаданных, и раздел III, посвященный набору инструкций CIL.Another useful resource for working with metadata and MSIL is the Common Language Infrastructure (CLI) documentation, especially "Partition II: Metadata Definition and Semantics" and "Partition III: CIL Instruction Set". Документация доступна через Интернет на веб- сайте ECMA.The documentation is available online at the Ecma Web site.

В этом разделеIn This Section

Вопросы безопасности в порождении отраженияSecurity issues in reflection emit
Описываются проблемы безопасности, связанные с созданием динамических сборок с помощью порождения отражения.Describes security issues related to creating dynamic assemblies using reflection emit.

Практическое руководство. Определение и выполнение динамических методов How to: Define and execute dynamic methods
Показывает способы определения и выполнения простого динамического метода и динамического метода, привязанного к экземпляру класса.Shows how to execute a simple dynamic method and a dynamic method bound to an instance of a class.

Практическое руководство. Определение универсального типа с порождаемым отражением How to: Define a generic type with reflection emit
Описывает способы создания простого универсального типа с двумя параметрами типа, применение ограничений класса, ограничений интерфейса и специальных ограничений для параметров типа, создание элементов, использующих параметры типа класса в качестве типов параметров и типов возвращаемых значений.Shows how to create a simple generic type with two type parameters, how to apply class, interface, and special constraints to the type parameters, and how to create members that use the type parameters of the class as parameter types and return types.

Практическое руководство. Определение универсального метода с порождаемым отражением How to: Define a generic method with reflection emit
Показывает, как создать, породить и вызвать простой универсальный метод.Shows how to create, emit, and invoke a simple generic method.

Забираемые сборки для динамической генерации типа Collectible assemblies for dynamic type generation
Представляет забираемые сборки, то есть динамические сборки, которые можно выгрузить без выгрузки домена приложения, в котором они были созданы.Introduces collectible assemblies, which are dynamic assemblies that can be unloaded without unloading the application domain in which they were created.

Справочные сведенияReference

OpCodes
Каталог кодов инструкций MSIL, которые можно использовать для построения тел методов.Catalogs the MSIL instruction codes you can use to build method bodies.

System.Reflection.Emit
Содержит управляемые классы, используемые для порождения динамических методов, сборок и типов.Contains managed classes used to emit dynamic methods, assemblies, and types.

Type
Описывается класс Type, который представляет типы в управляемом отражении и порождении отражения и является ключевым элементом при использовании этих технологий.Describes the Type class, which represents types in managed reflection and reflection emit, and which is key to the use of these technologies.

System.Reflection
Содержит управляемые классы, используемые для просмотра метаданных и управляемого кода.Contains managed classes used to explore metadata and managed code.

ОтражениеReflection
Описываются способы просмотра метаданных и управляемого кода.Explains how to explore metadata and managed code.

Сборки в .NETAssemblies in .NET
Предоставляет обзор сборок в реализациях .NET.Provides an overview of assemblies in .NET implementations.