[英]How can I get the name of the field from an expression?
我有一个传递给函数的表达式,看起来像这样:
x=>x.SomeField
我想以某种方式获取该字段的名称“ SomeField”,以字符串形式供我使用。 我意识到可以调用myExpression.ToString(),然后解析字符串,但是我想要一个更可靠,更快速的方法。
public string GetMemberName<T>(Expression<Func<T>> expr)
{
var memberExpr = expr.Body as MemberExpression;
if (memberExpr == null)
throw new ArgumentException("Expression body must be a MemberExpression");
return memberExpr.Member.Name;
}
...
MyClass x = /* whatever */;
string name = GetMemberName(() => x.Something); // returns "Something"
您必须实现一个表达式树访问者
http://msdn.microsoft.com/zh-CN/library/bb882521(VS.90).aspx
您将评估代码放入MemberAccessExpression访问中
我使用了ncommon框架中提供的一些帮助程序来完成此任务。 具体来说,您可能会对Expressions命名空间中的类感兴趣
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.