【问题标题】:Is it possible to create a general method which with the input of a lambda expression can return the method name as a String?是否可以创建一个通用方法,通过输入 lambda 表达式可以将方法名称作为字符串返回?
【发布时间】:2014-01-30 18:23:35
【问题描述】:

我想创建一个方法调用的 lambda 表达式,并将方法的名称(不带命名空间)作为字符串返回。我见过this thread 解决了VB.NET 中Func<TTarget, EventHandler<TEventArgs>> 的问题,但我希望能够使用任意数量的参数为任何FuncAction 解决问题。是否可以通过使用它的System.Linq.Expression 派生来创建一个方法来完成此操作?

我已经用the example 苦苦挣扎了半个小时,但我什至无法编译它。

我也有这个解决方案,但我在运行时遇到了无效的强制转换异常:

public static String NameOfMethod(Expression<Action> exp)
{
    return ((MethodCallExpression)(Object)exp).Method.Name;
}

【问题讨论】:

    标签: c# lambda


    【解决方案1】:

    expLambdaExpression,所以你需要转换身体:

    return ((MethodCallExpression)exp.Body).Method.Name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      相关资源
      最近更新 更多