zoukankan      html  css  js  c++  java
  • .net 获取简单表达式的名称

    有一个类

    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);
        // ...
    }
    

      

  • 相关阅读:
    Annotation
    jdbc
    集合
    与运行环境交互
    计数排序and基数排序
    面向对象下
    面向对象
    流程控制与数组
    庆祝自己的BLOG开张
    Raspberry Pi配置为无线路由器
  • 原文地址:https://www.cnblogs.com/saving/p/11357700.html
Copyright © 2011-2022 走看看