猿问

如何在表达式树中编写新的 List<CustomClass>()?

我想知道我们如何在表达式树中表示下面的 c# 代码。

var list = new List<CustomClass>();
 list.add(new CustomClass());

其中 CustomClass 是一些复杂类型的类。

就像如何使用 Expression.NewArrayInit 初始化数组一样


繁星点点滴滴
浏览 136回答 2
2回答

烙印99

我建议使用集合初始值设定项,而不是使用两个单独的语句。此时,您可以让编译器为您构建表达式树,因为它是单个表达式:Expression<Func<List<CustomClass>>>&nbsp;expr&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;()&nbsp;=>&nbsp;new&nbsp;List<CustomClass>&nbsp;{&nbsp;new&nbsp;CustomClass()&nbsp;};使用表达式树的工具(例如 LINQ 提供程序)也更有可能理解该树。生成的树Expression.ListInitExpression用作 的列表等价物的排序Expression.NewArrayInit。手动编写等效代码有点痛苦,但如果您真的需要,您可以反编译编译器对该 lambda 表达式所做的事情。
随时随地看视频慕课网APP
我要回答