获取表达式参数名称

时间:2010-09-09 12:42:29

标签: c# expression func

我需要获取表达式参数的名称。我想要做的是类似于FluentNhibernate对列映射的作用:

  

地图(x => x.Name)

由此,我需要“姓名”。

我该怎么做?

我可以通过这样做获得x

Expression<Func<User, object>> exp = x => x.Id;
exp.Parameters[0].Name;

但我无法获得“名字”。请注意,我没有任何可以调用的T实例。 感谢

1 个答案:

答案 0 :(得分:7)

(expr.Body as MemberExpression).Member.Name

当表达式返回object时,正文将被包装在Convert表达式中。

以下情况应该有效。

((expr.Body as UnaryExpression).Operand as MemberExpression).Member.Name