【发布时间】:2010-12-30 21:51:39
【问题描述】:
我想知道是否可以使用这个表达式构建器类来动态生成 lambda 表达式,其中要过滤的类型在编译时是未知的。
我有一个构造表达式的方法,
public static Expression<Func<T, bool>> GetExpression<T>(IList<QueryFilter> filters)
还有一个 QueryFilter 对象,
public class QueryFilter
{
public string PropertyName { get; set; }
public ExpressionType OpType { get; set; }
public object Value { get; set; }
}
您可以在其中生成一个使用传入的 QueryFilters 过滤对象 T 的新表达式。我想开发一种类型未知的方法,即。
public static Expression<Func<T,bool>> GetExpression(IList<QueryFilter> filters, Type type)
因此,我可以将类型作为参数从对 System.Reflection 的调用中传递,而不必在代码中指定它。例如类似的事情,
public static Expression NewExpression(IList<QueryFilter> filters, Type T)
{
return GetExpression<Type>(filters);
}
如果可以在 Type 替换通用 'T' 的情况下使用这种语法?由于我不认为我可以在 括号内指定运行时动态类型,还有另一种方法,也许使用
Func<object,bool>
改为?
【问题讨论】:
标签: c# linq expression-trees