/// <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
浙公网安备 33010602011771号