DynamicILInfo Класс

Определение

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

public sealed class DynamicILInfo
[System.Runtime.InteropServices.ComVisible(true)]
public class DynamicILInfo
public class DynamicILInfo
Наследование
DynamicILInfo
Атрибуты

Комментарии

Класс DynamicILInfo позволяет разработчикам создавать собственные генераторы MSIL вместо использования ILGenerator.

Для создания экземпляров других типов, методов вызова и т. д. создаваемый MSIL должен включать маркеры для этих сущностей. Класс DynamicILInfo предоставляет несколько перегрузок GetTokenFor метода , которые возвращают маркеры, допустимые в область текущего DynamicILInfo. Например, если необходимо вызвать перегрузку Console.WriteLine метода, можно получить RuntimeMethodHandle для этой перегрузки и передать ее методу GetTokenFor , чтобы получить маркер для внедрения в MSIL.

После создания Byte массивов для сигнатуры локальных переменных, исключений и текста кода можно использовать SetCodeметоды , SetExceptionsи SetLocalSignature , чтобы вставить их в объект , связанный DynamicMethod с объектом DynamicILInfo .

Для создания собственных метаданных и MSIL требуется знакомство с документацией по общеязыковой инфраструктуре (CLI), в частности с разделом II: определение и семантика метаданных и раздел III. Набор инструкций CIL. Дополнительные сведения см. в разделе ECMA 335 COMMON Language Infrastructure (CLI).

Примечание

Не используйте для DynamicILInfo создания кода, который создает делегат для другого динамического метода путем вызова конструктора делегата напрямую. Вместо этого используйте метод для CreateDelegate создания делегата. Делегат, созданный с помощью конструктора делегата, не имеет ссылки на целевой динамический метод. Динамический метод может быть восстановлен сборкой мусора, пока делегат все еще используется.

Свойства

DynamicMethod

Возвращает динамический метод, основной текст которого создан текущим экземпляром.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetTokenFor(Byte[])

Возвращает токен, допустимый в области текущего DynamicILInfo, представляющего подпись для связанного динамического метода.

GetTokenFor(DynamicMethod)

Возвращает токен, допустимый в области текущего DynamicILInfo, представляющего динамический метод, который должен быть вызван из связанного метода.

GetTokenFor(RuntimeFieldHandle)

Возвращает токен, допустимый в области текущего DynamicILInfo, представляющего поле, к которому должен быть предоставлен доступ из связанного динамического метода.

GetTokenFor(RuntimeFieldHandle, RuntimeTypeHandle)

Получает токен, допустимый в области текущего объекта DynamicILInfo, представляющего поле, к которому должен быть предоставлен доступ из связанного динамического метода; поле относится к указанному универсальному типу.

GetTokenFor(RuntimeMethodHandle)

Возвращает токен, допустимый в области текущего DynamicILInfo, представляющего метод, к которому должен быть предоставлен доступ из связанного динамического метода.

GetTokenFor(RuntimeMethodHandle, RuntimeTypeHandle)

Возвращает токен, допустимый в области действия текущего DynamicILInfo, представляющего метод в универсальном типе.

GetTokenFor(RuntimeTypeHandle)

Возвращает токен, допустимый в области текущего DynamicILInfo, представляющего тип, который будет использоваться в связанном динамическом методе.

GetTokenFor(String)

Возвращает токен, допустимый в области текущего DynamicILInfo, представляющего строковый литерал, который будет использоваться в связанном динамическом методе.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
SetCode(Byte*, Int32, Int32)

Задает основной текст кода связанного динамического метода.

SetCode(Byte[], Int32)

Задает основной текст кода связанного динамического метода.

SetExceptions(Byte*, Int32)

Задает метаданные исключения для связанного динамического метода.

SetExceptions(Byte[])

Задает метаданные исключения для связанного динамического метода.

SetLocalSignature(Byte*, Int32)

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

SetLocalSignature(Byte[])

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

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

Продукт Версии
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.1