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.