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:好吧,这已经提供了更多信息-我怀疑最后一个选项是最适合这里的选项。