/// <summary>
        /// 构建获取属性方法的委托
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="property">属性</param>
        /// <returns></returns>
        private Action<T,object> SetValue<T>(PropertyInfo property)
        {
            ParameterExpression parameter = Expression.Parameter(typeof(T), "instance");
            ParameterExpression parameterValue = Expression.Parameter(typeof(object), "value");
            MethodInfo method = property.GetSetMethod();
            var lambda = Expression.Lambda<Action<T, object>>(
                Expression.Call(
                parameter,
                method,
                Expression.Convert(parameterValue, property.PropertyType)
                                ),
                                parameter,
                                parameterValue
                ).Compile();
            return lambda;
        }

 

感觉这样还是不行,性能没有提高,每次都要重新构建一个新的表达式,缓存起来也解决不了这个问题,因为属性的类型是动态获取的....哎。。不知道咋办...

 posted on 2009-12-03 16:26  隔山打牛  阅读(316)  评论(0)    收藏  举报