c#通过表达式获取调用的属性名称

/// <summary>
        /// 获取表达式调用的字段名称
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expr"></param>
        /// <returns></returns>
        private string GetPropertyName<T>(Expression<Func<T, object>> expr)
        {
            switch (expr.Body)
            {
                case MemberExpression memberExpression:
                    return memberExpression.Member.Name;
                case UnaryExpression unaryExpression:
                    if (unaryExpression.Operand is MemberExpression expression)
                    {
                        return expression.Member.Name;
                    }

                    break;
                default:
                    break;
            }

            return "";
        }

调用方法

string desc = GetPropertyName<A>(f => f.Id);

System.Console.WriteLine(desc);
posted @ 2021-12-24 15:15  Hey,Coder!  阅读(110)  评论(0编辑  收藏  举报