使用反射来查找DynamicMethods



我想以某种方式找到我当前上下文中的所有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

相关内容

  • 没有找到相关文章

最新更新