我想创建一个接受方法调用的lambda表达式,并将该方法的名称(没有名称空间)作为字符串返回。我见过this thread解决了VB.NET中Func<TTarget, EventHandler<TEventArgs>>
的问题,但我希望能够为任何Func
或Action
解决任何问题参数。是否可以通过使用它的System.Linq.Expression派生来创建单个方法来实现这个目标?
我和the example一直在挣扎半个小时,但我甚至无法编译。
我也有这个解决方案,但是我在运行时遇到了一个无效的强制转换异常:
public static String NameOfMethod(Expression<Action> exp)
{
return ((MethodCallExpression)(Object)exp).Method.Name;
}
答案 0 :(得分:1)
exp
是LambdaExpression
所以你需要施放尸体:
return ((MethodCallExpression)exp.Body).Method.Name;