Я использую System.Reflection.Emit и в какой-то момент хочу создать делегата из MethodBuilder:
MethodBuilder fooBuilder = createFooMethodBuilder();
ILGenerator ilGenerator = ...
Type delegateType = typeof(DelegateType);
LocalBuilder delegateVar = ilGenerator.DeclareLocal(delegateType);
//Somehow create emit instructions to create delegate from fooBuilder
//Store delegate in delegateVar using
Я мог узнать, что для создания делегатов из статических функций используется что-то вроде этого:
ldnull
ldftn void class Test.MainClass::bar()
newobj instance void class Test.DelegateType::'.ctor'(object, native int)
Но теперь я застрял. Мне нужен способ ldftn для MethodBuilder, а затем мне нужен способ выдать инструкцию для следующей строки. И я понятия не имею, как получить конструктор, который принимает собственный тип int.
Какие-либо предложения?