【问题标题】:How Create programmaticaly Expression.Lambda<Func<TEntity, TProperty>> with variable Type?如何使用变量类型以编程方式创建 Expression.Lambda<Func<TEntity, TProperty>>?
【发布时间】:2023-04-10 22:11:01
【问题描述】:

我想创建下面的代码

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

我可以创建这个吗?

【问题讨论】:

    标签: c# generics lambda expression


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多