是否可以创建一个通用方法,通过输入lambda表达式可以将方法名称作为String返回?

时间:2014-01-30 10:14:23

标签: c# lambda

我想创建一个接受方法调用的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;
}

1 个答案:

答案 0 :(得分:1)

expLambdaExpression所以你需要施放尸体:

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