如何从MethodCallExpression获取带有参数的Type []?

时间:2010-05-02 22:20:26

标签: c# reflection types arguments

我正在反思一个类(在所述类的单元测试中),以确保其成员具有所有必需的属性。为此,我构建了一些帮助者,以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,并且在此方法中<...>的内容未知。

1 个答案:

答案 0 :(得分:1)

为什么使用反射来查找MethodInfo?您已经从MethodCallExpression ...

获得了它

这样做:

var m = mce.Method;