【发布时间】:2010-05-02 22:20:26
【问题描述】:
我正在反思一个类(在该类的单元测试中)以确保其成员具有所有必需的属性。为此,我构建了几个助手,它们以Expression 作为参数。我对其进行了一些检查,并根据Expression 的类型采取了略有不同的操作,但基本相同。
现在,我的问题是我有几个具有相同名称(但签名不同)的方法,下面的代码会抛出一个AmbiguousMatchException:
// TOnType is a type argument for the type where the method is declared
// mce is the MethodCallExpression
var m = typeof(TOnType).GetMethod(mce.Method.Name);
现在,如果我可以添加一个包含Type[] 的数组以及此方法的参数类型作为.GetMethod() 的第二个参数,那么问题将得到解决。
但是如何找到我需要的这个Type[] 数组呢?
我已将Expression<Func<...>> 转换为Expression,然后转换为MethodCallExpression,在此方法中<...> 的内容是未知的。
【问题讨论】:
-
我对这个问题感到困惑。你手头有一个 MethodCallExpression,是吗?为什么不只看方法调用表达式中的方法信息呢?那不是有你需要的一切吗?你能澄清这个问题吗?一些示例代码可能会有所帮助。
-
我不明白。或许你可以再解释一下?
标签: c# reflection types arguments