【问题标题】:How do I get a Type[] with arguments from a MethodCallExpression?如何从 MethodCallExpression 获取带有参数的 Type[]?
【发布时间】: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


【解决方案1】:

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

只要这样做:

var m = mce.Method;

【讨论】:

    猜你喜欢
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多