use*_*141 3 c# expression properties
我正在尝试使用给定的类型和属性名称构建属性选择器表达式.即t => t.PropertyName.
以下代码编译得很好但导致空值.有人可以指出代码中的错误吗?
public static Expression<Func<T,object>> CreatePropSelectorExpression(string propName) where T:class,new()
{
var temp = Activator.CreateInstance<T>();
ParameterExpression t = Expression.Parameter(typeof(T),"t");
MemberExpression member = Expression.PropertyOrField(Expression.Constant(temp),propName);
return Expression.Lambda<Func<T,object>>(member,t);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
您实际上不需要创建对象的实例T,而只需创建一些表达式树.这一切归结为真的:
Expression<Func<T, object>> CreatePropSelectorExpression<T>(string propertyName)
{
var parameter = Expression.Parameter(typeof(T));
var body = Expression.Convert(Expression.PropertyOrField(parameter, propertyName), typeof(object));
return Expression.Lambda<Func<T, object>>(body, parameter);
}
Run Code Online (Sandbox Code Playgroud)