Generics 如何构建泛型类型参数
我有个问题。 如何生成泛型类型参数? 我正在尝试构建一个表达式树,需要构建以下行:Generics 如何构建泛型类型参数,generics,parameters,lambda,types,expression-trees,Generics,Parameters,Lambda,Types,Expression Trees,我有个问题。 如何生成泛型类型参数? 我正在尝试构建一个表达式树,需要构建以下行: var expression = Expression .Lambda<Func<T, bool>>( operation, new ParameterExpression[] {parameter}); var expression=expression 兰姆达先生( 活动
var expression = Expression
.Lambda<Func<T, bool>>(
operation,
new ParameterExpression[] {parameter});
var expression=expression
兰姆达先生(
活动
新参数表达式[]{parameter});
因此,我希望在.Lambda>中为T指定类型参数,但在运行时之前,类型参数T是未知的
请帮忙。
谢谢好吧,你可以用一种通用的方法来写:
public Expression<Func<T,bool>> BuildExpression<T>(...)
{
// Whatever you need to do
var expression = Expression
.Lambda<Func<T, bool>>(
operation,
new ParameterExpression[] {parameter});
}
公共表达式BuildExpression(…)
{
//不管你需要做什么
变量表达式=表达式
兰姆达先生(
活动
新参数表达式[]{parameter});
}
。。。然后通过反射调用该方法。或者:
- 您可以通过反射调用generic
方法Expression.Lambda
- 你可以打电话
如果对您的需求一无所知,就很难给出关于哪种方法最合适的建议。请编辑您的问题以提供更多详细信息。谢谢您的回答。我试图构建的是一个实用程序,它将用户界面中的查询转换为域中的查询。问题是UI只看到DTO类而不是域,所以我必须将linq表达式(personDTO x)=>x.Name转换为(Person x)=>x.Name。不知何故,我成功地解析并构建了表达式。现在剩下的是最后一步。拉姆达先生。问题是我不知道参数t-(这是实域对象ie(Person)的类型参数),因为该类型参数是在运行时生成的。@Luka:好吧,这已经提供了更多信息-我怀疑最后一个选项是最适合这里的选项。