Expression Tree

来源:互联网 发布:淘宝店提高销量秘诀 编辑:程序博客网 时间:2024/05/16 23:17

Expression Tree

Expression Tree 的一个例子

Expression Tree 的一个例子

public static class ObjectionExtension    {        /// <summary>        /// 获取属性的名称        /// </summary>        /// <typeparam name="T">泛型</typeparam>        /// <typeparam name="TProperty">属性</typeparam>        /// <param name="t">对象</param>        /// <param name="expression">属性</param>        /// <returns>属性的名称</returns>        public static string GetPropertyName<T, TProperty>(this T t, Expression<Func<T, TProperty>> expression)        {            var memberExpression = expression.Body as MemberExpression;            if (memberExpression != null)            {                return memberExpression.Member.Name;            }            var paramExpression = expression.Body as ParameterExpression;            if (paramExpression != null)            {                return paramExpression.Name;            }            return string.Empty;        }        /// <summary>          /// 根据属性名获取属性值          /// </summary>          /// <typeparam name="T">对象类型</typeparam>          /// <param name="t">对象</param>          /// <param name="name">属性名</param>          /// <returns>属性的值</returns>          public static TProperty GetPropertyValue<T, TProperty>(this T t, Expression<Func<T, TProperty>> expression)        {            var func = expression.Compile();            var result = func(t);            return result;        }        /// <summary>          /// 根据属性名称设置属性的值          /// </summary>          /// <typeparam name="T">对象类型</typeparam>          /// <param name="t">对象</param>          /// <param name="name">属性名</param>          /// <param name="value">属性的值</param>          public static void SetPropertyValue<T>(this T t, Action<T> action)        {            action(t);        }        public static T As<T>(this object obj)        {            return default(T);        }    }
0 0
原创粉丝点击