如何创建programmaticaly Expression.Lambda <func <tentity,tproperty =“”>&gt;变量类型?</func <tentity,>

时间:2014-04-08 10:38:22

标签: c# generics lambda expression

我想创建以下代码

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);

我可以创建吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Expression.Lamdba(Type, Expression, params ParameterExpression[]) - 您可以使用typeof(Func<,>).MakeGenericType(typeof(TEntity), nameType)创建相关类型。

那只会给你一个LambdaExpression。目前还不清楚你要用结果做什么,但你不会有一个可以调用的强类型表达式。 (当你编译它时,它将构建正确的委托类型。)