我有这行代码:
var predicate = Expression.Lambda<Func<TEntityType, bool>>(body, param);
其中TEntityType是通用parm。
但是,我没有通用的parm。我有:
Type _EntityType;
这种情况下Expression.Lambda的非泛型语法是什么?
由于
答案 0 :(得分:9)
Expression.Lambda
有一个带有表达式主体类型的重载,所以你只需要在调用那个重载之前动态创建类型。
type lambdaType = typeof(Func<,>).MakeGenericType(_EntityType, typeof(bool));
var predicate = Expression.Lambda(lambdaType, body, param);