我想创建以下代码
var lambda = Expression.Lambda<Func<TEntity, TProperty>>(expName, entity);
但是TProperty类型是可变的并且在循环中改变,我可以得到这个类型:
var nameType = typeof(TEntity).GetProperty(name);
我希望有这样的
var lambda = Expression.Lambda<Func<TEntity, nameType>>(expName, entity);
我可以创建吗?
答案 0 :(得分:2)
您可以使用Expression.Lamdba(Type, Expression, params ParameterExpression[])
- 您可以使用typeof(Func<,>).MakeGenericType(typeof(TEntity), nameType)
创建相关类型。
那只会给你一个LambdaExpression
。目前还不清楚你要用结果做什么,但你不会有一个可以调用的强类型表达式。 (当你编译它时,它将构建正确的委托类型。)