C# 如何从MethodCallExpression获取带参数的[]类型?

C# 如何从MethodCallExpression获取带参数的[]类型?,c#,reflection,types,arguments,C#,Reflection,Types,Arguments,我正在反思一个类(在该类的单元测试中),以确保其成员具有所有必需的属性。为此,我构造了两个助手,它们将表达式作为参数。我对它进行了一些检查,并根据它是什么类型的表达式采取了稍微不同的操作,但基本上是一样的 现在,我的问题是我有几个同名的方法(但签名不同),下面的代码抛出了一个含糊不清的MatchException: // TOnType is a type argument for the type where the method is declared // mce is the Metho

我正在反思一个类(在该类的单元测试中),以确保其成员具有所有必需的属性。为此,我构造了两个助手,它们将
表达式
作为参数。我对它进行了一些检查,并根据它是什么类型的
表达式
采取了稍微不同的操作,但基本上是一样的

现在,我的问题是我有几个同名的方法(但签名不同),下面的代码抛出了一个
含糊不清的MatchException

// 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()
的第二个参数,那么问题就解决了

但是如何找到我需要的
类型[]
数组?


我已经将
表达式
转换为
表达式
,然后转换为
方法调用表达式
,在这种方法中,
的内容是未知的。

为什么要使用反射来查找
方法信息
?您已经从
MethodCallExpression
中获得了它

只要这样做:

var m = mce.Method;

我被这个问题弄糊涂了。你手头有一个MethodCallExpression,是吗?为什么不在方法调用表达式中查看方法信息呢?那不是你需要的一切吗?你能澄清这个问题吗?一些示例代码可能会有所帮助。我不明白。也许你可以再解释一下?