我正在使用 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 的构造函数。
有什么建议么?