我想以某种方式在我当前的上下文中找到所有DynamicMethods
,考虑我有以下方法和委托:
public delegate double DivideInvoker(int a, int b);
public DivideInvoker CreateInvoker()
{
Type[] methodArguments = {
typeof(int),
typeof(int)
};
DynamicMethod division = new DynamicMethod(
"Division",
typeof(double),
methodArguments,
typeof(MyMethodCreator));
ILGenerator il = division.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Div);
il.Emit(OpCodes.Ret);
var divideIt = (DivideInvoker)division.CreateDelegate(typeof(DivideInvoker));
return divideIt;
}
如果我这样做:var divideIt = CreateInvoker();
,我能以某种方式使用反射来找到动态方法方法吗?
根据MSDN,上面的动态方法将是静态的,一旦它不再使用它将由GC处理,我只是用它来玩反射。
我已尝试在执行程序集中获取所有类型并列出其中的所有方法,但我在DynamicMethod
上找不到任何内容。
有什么想法吗?
答案 0 :(得分:2)
DivideInvoker invoker = CreateInvoker();
MethodInfo method = invoker.Method;
// method will contain the MethodInfo of the Division dynamic method
// so you could use reflection on it