我想以某种方式找到我当前上下文中的所有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
上找不到任何东西。
任何想法?
DivideInvoker invoker = CreateInvoker();
MethodInfo method = invoker.Method;
// method will contain the MethodInfo of the Division dynamic method
// so you could use reflection on it