有一个类
class Test { public int Id {get;set;} public string Name {get;set;} }
现在我想通过如下设置使用Expression表达式
void Exec<T>(Expression<Func<T, object>> expression) { } ... Exec<Test>(t => t.Id);
然后我想得到这个expression的名称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); // ... }