[英]How to get property name from expression
我有类测试:
class Test
{
public int Id {get;set;}
public string Name {get;set;}
}
和接受表达式的函数 Exec :
void Exec<T>(Expression<Func<T, object>> expression)
{
}
...
Exec<Test>(t => t.Id);
如何获取表达式中使用的属性名称? 在上面的代码中,这应该是Id。
就像是:
private static string GetMemberName(Expression expression)
{
switch(expression.NodeType)
{
case ExpressionType.MemberAccess:
return ((MemberExpression)expression).Member.Name;
case ExpressionType.Convert:
return GetMemberName(((UnaryExpression)expression).Operand);
default:
throw new NotSupportedException(expression.NodeType.ToString());
}
}
和:
public void Exec<T>(Expression<Func<T, object>> expression)
{
string name = GetMemberName(expression.Body);
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.