Поделиться через


RuntimeHelpers.PrepareMethod Метод

Определение

Подготавливает метод к включению в область с ограничением исполнения (CER).

Перегрузки

PrepareMethod(RuntimeMethodHandle)

Подготавливает метод к включению в область с ограничением исполнения (CER).

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Подготавливает метод для включения в область с ограничением исполнения (CER) с указанной реализацией.

PrepareMethod(RuntimeMethodHandle)

Исходный код:
RuntimeHelpers.CoreCLR.cs
Исходный код:
RuntimeHelpers.CoreCLR.cs
Исходный код:
RuntimeHelpers.CoreCLR.cs

Подготавливает метод к включению в область с ограничением исполнения (CER).

public:
 static void PrepareMethod(RuntimeMethodHandle method);
public static void PrepareMethod (RuntimeMethodHandle method);
[System.Security.SecurityCritical]
public static void PrepareMethod (RuntimeMethodHandle method);
static member PrepareMethod : RuntimeMethodHandle -> unit
[<System.Security.SecurityCritical>]
static member PrepareMethod : RuntimeMethodHandle -> unit
Public Shared Sub PrepareMethod (method As RuntimeMethodHandle)

Параметры

method
RuntimeMethodHandle

Дескриптор метода, который следует подготовить.

Атрибуты

Комментарии

Компиляторы используют PrepareMethod(RuntimeMethodHandle) метод для обработки виртуальных вызовов, выполняемых в области ограниченного выполнения (CER). Во время JIT-компиляции среда CLR обычно не имеет достаточной информации о целевом объекте виртуального вызова. Таким образом, среда выполнения изначально не подготавливает этот сегмент графа вызовов. Если код, использующий CER, обладает достаточными знаниями, чтобы определить целевой объект в любой момент времени до фактического ввода CER, он может вызвать PrepareMethod(RuntimeMethodHandle) для выполнения той же подготовки среды выполнения, которая обычно выполняется для cer, корнями которого является метод, указанный в качестве аргумента.

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

PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[])

Исходный код:
RuntimeHelpers.CoreCLR.cs
Исходный код:
RuntimeHelpers.CoreCLR.cs
Исходный код:
RuntimeHelpers.CoreCLR.cs

Подготавливает метод для включения в область с ограничением исполнения (CER) с указанной реализацией.

public:
 static void PrepareMethod(RuntimeMethodHandle method, cli::array <RuntimeTypeHandle> ^ instantiation);
public static void PrepareMethod (RuntimeMethodHandle method, RuntimeTypeHandle[]? instantiation);
[System.Security.SecurityCritical]
public static void PrepareMethod (RuntimeMethodHandle method, RuntimeTypeHandle[] instantiation);
public static void PrepareMethod (RuntimeMethodHandle method, RuntimeTypeHandle[] instantiation);
static member PrepareMethod : RuntimeMethodHandle * RuntimeTypeHandle[] -> unit
[<System.Security.SecurityCritical>]
static member PrepareMethod : RuntimeMethodHandle * RuntimeTypeHandle[] -> unit
Public Shared Sub PrepareMethod (method As RuntimeMethodHandle, instantiation As RuntimeTypeHandle())

Параметры

method
RuntimeMethodHandle

Дескриптор метода, который следует подготовить.

instantiation
RuntimeTypeHandle[]

Экземпляр для передачи в метод.

Атрибуты

Комментарии

Вы можете предоставить поддержку универсальных шаблонов для компиляторов с помощью PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) метода . Среда CLR не может подготовить области ограниченного выполнения (CER), созданные в методе, который имеет параметры универсального типа (параметр типа для класса, содержащего метод, или в самом методе), если эти параметры типа создаются как ссылочные типы.

Эту перегрузку можно использовать для передачи определенного экземпляра (например, массива типов), указав сначала параметры типа класса (если таковые есть), а затем параметры типа метода (если таковые есть). Среда выполнения подготавливает этот экземпляр метода . (Это необходимо, только если используемые экземпляры содержат по крайней мере один параметр ссылочного типа.) Таким образом, можно использовать предложение в стиле try CER в универсальном методе (или неуниверсальный метод в универсальном классе), и оно будет надежно работать с экземплярами или другими типами значений Int32 . Чтобы создать экземпляр ссылочных типов, таких как String, необходимо сначала использовать явный PrepareMethod(RuntimeMethodHandle, RuntimeTypeHandle[]) метод в корневом методе CER.

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