получить указатель на функцию 'ldftn' в C # - PullRequest
6 голосов
/ 12 октября 2010

в коде cil, ldftn используется для получения адреса указателя функции для вызова конструктора делегата (т.е. .ctor (object, native int)).
Как получить указатель на функцию, используемую для построения делегата в C #?

Ответы [ 2 ]

6 голосов
/ 13 октября 2010

Ваш вопрос сформулирован таким образом, что затрудняет понимание того, что вы на самом деле пытаетесь сделать. Я думаю, что, возможно, вы хотите что-то вроде этого:

MethodInfo mi = ...
var ptr = mi.MethodHandle.GetFunctionPointer();
// now call a delegate .ctor using that ptr
3 голосов
/ 12 октября 2010

Если вы ищете, как должен выглядеть код Reflection.Emit, то примерно так:

il.Emit(OpCodes.Ldftn, yourMethodInfo);
il.Emit(OpCodes.Newobj, yourDelegateType.GetConstructors()[0]);

Первая строка загружает указатель функции в стек.Вторая строка «передает» его конструктору делегата.yourDelegateType должно быть что-то вроде typeof(Func<string>) и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...