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,是吗?为什么不在方法调用表达式中查看方法信息呢?那不是你需要的一切吗?你能澄清这个问题吗?一些示例代码可能会有所帮助。我不明白。也许你可以再解释一下?