我想构建以下表达式:
Expression<Func<T, object>>
我目前有以下代码:
public class Strategy<T>
{
private static Expression<Func<T, object>> GetIt(PropertyInfo propertyInfo)
{
ParameterExpression parameter = Expression.Parameter(typeof(T));
MemberExpression property = Expression.Property(parameter, propertyInfo);
Type funcType = typeof(Func<,>).MakeGenericType(typeof(T), typeof(object));
//next line fails: can't convert int to object
LambdaExpression lambda = Expression.Lambda(funcType, property, parameter);
Expression<Func<T, object>> retval = (Expression<Func<T, object>>)lambda;
return retval;
}
}
我的PropertyInfo对象的返回类型是“int”。 怎样在我的Expression中使用装箱?
Expression<Func<T, object>> retval = Expression.Lambda<Func<T, object>>(Expression.Convert(property, typeof(object)), parameter);
- user4003407