Учти это:
var propertyinfo = typeof(Customer).GetProperty(sortExpressionStr);
Type orderType = propertyinfo.PropertyType;
теперь я хочу объявить
Func<int,orderType>
Я знаю, что это невозможно напрямую, так как ordertype
находится во время выполнения, но есть ли обходной путь?
это именно то, что я хочу сделать:
var propertyinfo = typeof(T).GetProperty(sortExpressionStr);
Type orderType = propertyinfo.PropertyType;
var param = Expression.Parameter(typeof(T), "x");
var sortExpression = (Expression.Lambda<Func<T, orderType>>
(Expression.Convert(Expression.Property(param, sortExpressionStr), typeof(orderType)), param));
все это потому, что я хочу преобразовать:
Expression<Func<T,object>> to Expression<Func<T,orderType>>
или, если это невозможно, я хочу создать его с первого места с правильным типом, дело в следующем:
Я нахожусь внутри метода, который имеет type(Customer)
и имя свойства этого типа, которое я хочу заказать по нему, я хочу создать дерево выражений сортировки, чтобы передать его Orderby
(здесь).
sortExpression
имеет типExpression<Func<T,orderType>>
, потому чтоorderType
неизвестно во время компиляции, а только во время выполнения. Как вы собираетесь использовать лямбда-выражение после компиляции? - person dtb   schedule 20.09.2010