ILGenerator Класс

Определение

Создает инструкции Microsoft промежуточного языка (MSIL).

public ref class ILGenerator abstract
public ref class ILGenerator
public ref class ILGenerator : System::Runtime::InteropServices::_ILGenerator
public abstract class ILGenerator
public class ILGenerator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class ILGenerator : System.Runtime.InteropServices._ILGenerator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public class ILGenerator : System.Runtime.InteropServices._ILGenerator
type ILGenerator = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type ILGenerator = class
    interface _ILGenerator
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ILGenerator = class
    interface _ILGenerator
Public MustInherit Class ILGenerator
Public Class ILGenerator
Public Class ILGenerator
Implements _ILGenerator
Наследование
ILGenerator
Атрибуты
Реализации

Комментарии

ILGeneratorиспользуется для создания тел методов и конструкторов в динамических сборках (представленных и MethodBuilder классами) и для автономных динамических методов (представленных ConstructorBuilder классомDynamicMethod). Чтобы получить ILGenerator, используйте ConstructorBuilder.GetILGeneratorDynamicMethod.GetILGeneratorметоды и MethodBuilder.GetILGenerator методы.

MSIL используется в качестве входных данных для JIT-компилятора.

Предупреждение

Нет ограничений, кроме базовой проверки, для API ILGenerator, которые создают метод IL. Если ненадежные входные данные используются для создания IL:

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

Такой код может делать все возможное, когда метод загружается и выполняется. Для защиты от таких уязвимостей ILGenerator требуется полностью надежная среда с доверенными входными данными.

Конструкторы

Имя Описание
ILGenerator()

Инициализирует новый экземпляр класса ILGenerator.

Свойства

Имя Описание
ILOffset

Возвращает текущее смещение (в байтах) в потоке MSIL( майкрософт), который генерируется ILGenerator.

Методы

Имя Описание
BeginCatchBlock(Type)

Начинает блок catch.

BeginExceptFilterBlock()

Начинает блок исключений для отфильтрованного исключения.

BeginExceptionBlock()

Начинает блок исключений для нефильтрованного исключения.

BeginFaultBlock()

Начинает блок сбоя исключения в потоке Microsoft промежуточного языка (MSIL).

BeginFinallyBlock()

Начинается, наконец, блок в потоке инструкций Microsoft промежуточного языка (MSIL).

BeginScope()

Начинает лексическую область.

CreateLabel(Int32)

Label Создает идентификатор с заданным идентификатором.

DeclareLocal(Type, Boolean)

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

DeclareLocal(Type)

Объявляет локальную переменную указанного типа.

DefineLabel()

Объявляет новую метку.

Emit(OpCode, Byte)

Помещает указанный аргумент инструкции и символьного аргумента в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, ConstructorInfo)

Помещает указанные инструкции и маркер метаданных для указанного конструктора в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, Double)

Помещает указанную инструкцию и числовый аргумент в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, FieldInfo)

Помещает указанный маркер инструкции и маркер метаданных для указанного поля в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, Int16)

Помещает указанную инструкцию и числовый аргумент в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, Int32)

Помещает указанную инструкцию и числовый аргумент в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, Int64)

Помещает указанную инструкцию и числовый аргумент в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, Label)

Помещает указанную инструкцию в поток Microsoft промежуточного языка (MSIL) и оставляет место для включения метки при выполнении исправлений.

Emit(OpCode, Label[])

Помещает указанную инструкцию в поток Microsoft промежуточного языка (MSIL) и оставляет место для включения метки при выполнении исправлений.

Emit(OpCode, LocalBuilder)

Помещает указанную инструкцию в поток Microsoft промежуточного языка (MSIL), за которым следует индекс заданной локальной переменной.

Emit(OpCode, MethodInfo)

Помещает указанную инструкцию в поток Microsoft промежуточного языка (MSIL), за которым следует маркер метаданных для данного метода.

Emit(OpCode, SByte)

Помещает указанный аргумент инструкции и символьного аргумента в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, SignatureHelper)

Помещает указанную инструкцию и маркер подписи в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, Single)

Помещает указанную инструкцию и числовый аргумент в поток инструкций Microsoft промежуточного языка (MSIL).

Emit(OpCode, String)

Помещает указанную инструкцию в поток Microsoft промежуточного языка (MSIL), за которым следует маркер метаданных для заданной строки.

Emit(OpCode, Type)

Помещает указанную инструкцию в поток Microsoft промежуточного языка (MSIL), за которым следует маркер метаданных для данного типа.

Emit(OpCode)

Помещает указанную инструкцию в поток инструкций.

EmitCall(OpCode, MethodInfo, Type[])

Помещает инструкцию call или callvirt в поток промежуточного языка (MSIL) Microsoft для вызова метода varargs.

EmitCalli(OpCode, CallingConvention, Type, Type[])

Помещает инструкцию Calli в поток промежуточного языка Microsoft (MSIL), указывая неуправляемое соглашение о вызовах для косвенного вызова.

EmitCalli(OpCode, CallingConventions, Type, Type[], Type[])

Помещает инструкцию Calli в поток промежуточного языка Microsoft (MSIL), указывая соглашение об управляемых вызовах для косвенного вызова.

EmitCalli(Type)

Создает инструкции Microsoft промежуточного языка (MSIL).

EmitWriteLine(FieldInfo)

Выводит Microsoft промежуточный язык (MSIL), необходимый для вызова WriteLine с заданным полем.

EmitWriteLine(LocalBuilder)

Выдает Microsoft промежуточный язык (MSIL), необходимый для вызова WriteLine с заданной локальной переменной.

EmitWriteLine(String)

Выводит Microsoft промежуточный язык (MSIL) для вызова WriteLine со строкой.

EndExceptionBlock()

Заканчивает блок исключений.

EndScope()

Заканчивает лексическую область.

Equals(Object)

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

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

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

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

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

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

Помечает текущее положение потока Microsoft промежуточного языка (MSIL) с заданной меткой.

MarkSequencePoint(ISymbolDocumentWriter, Int32, Int32, Int32, Int32)

Помечает последовательность в потоке Microsoft промежуточного языка (MSIL).

MarkSequencePointCore(ISymbolDocumentWriter, Int32, Int32, Int32, Int32)

При переопределении в производном классе помечает точку последовательности в потоке Microsoft промежуточного языка (MSIL).

MemberwiseClone()

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

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

Выдает инструкцию для создания исключения.

ToString()

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

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

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

Явные реализации интерфейса

Имя Описание
_ILGenerator.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

_ILGenerator.GetTypeInfo(UInt32, UInt32, IntPtr)

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

_ILGenerator.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

_ILGenerator.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

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