如何从C#中的表达式获取第一个方法的名称?类似下面的虚构MethodUtils.NameFromExpression():
Expression<Action<string>> expr = s => s.Trim();
Assert.AreEqual("Trim", MethodUtils.NameFromExpression(expr));
Run Code Online (Sandbox Code Playgroud)
理想情况下,任何util方法都将以这样一种方式编写/重载,即它可以为任何Action或Func委托类型提供表达式.
提前致谢.
UPDATE
我找到了答案(下面),但仍然想知道这是否是一个好的解决方案,或者是否已经存在在BCL中执行此操作的方法.
chi*_*tom 10
用调试器挖掘一下,我回答了我自己的问题:
public static class MethodUtils
{
public static string NameFromExpression(LambdaExpression expression)
{
MethodCallExpression callExpression =
expression.Body as MethodCallExpression;
if(callExpression == null)
{
throw new Exception("expression must be a MethodCallExpression");
}
return callExpression.Method.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
对此实施有何评论?
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |