为了账号安全,请及时绑定邮箱和手机立即绑定

从lambda表达式中检索属性名

从lambda表达式中检索属性名

青春有我 2019-06-04 17:22:36
从lambda表达式中检索属性名当通过lambda表达式传入时,是否有更好的方法获取属性名称?这是我目前所拥有的。例如。GetSortingInfo<User>(u => u.UserId);它的工作方式是,只有当属性是字符串时,才将其转换为成员表达式。因为不是所有的属性都是字符串,所以我不得不使用Object,但是它会返回这些字符串的一个unary表达式。public static RouteValueDictionary GetInfo<T>(this HtmlHelper html,      Expression<Func<T, object>> action) where T : class{     var expression = GetMemberInfo(action);     string name = expression.Member.Name;     return GetInfo(html, name);}private static MemberExpression GetMemberInfo(Expression method){     LambdaExpression lambda = method as LambdaExpression;     if (lambda == null)         throw new ArgumentNullException("method");     MemberExpression memberExpr = null;     if (lambda.Body.NodeType == ExpressionType.Convert)     {         memberExpr =              ((UnaryExpression)lambda.Body).Operand as MemberExpression;     }     else if (lambda.Body.NodeType == ExpressionType.MemberAccess)     {         memberExpr = lambda.Body as MemberExpression;     }     if (memberExpr == null)         throw new ArgumentException("method");     return memberExpr;}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 834 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信