2

我在 Compact Framework 上使用 Linq 表达式树(来自 db4o/Mainsoft/Mono 端口)。由于 System.Reflection.Emit 不存在,我无法将我的 LambdaExpressions 编译为委托,出于性能原因我想这样做。

我想也许我可以将我的表达式树转换为 IL 并基本上以这种方式提供缺少的 Emit 功能,但后来我意识到我必须在其上运行基于 WinCE 的 ILASM 或编写我自己的 PE 标头和汇编元数据。

我更希望 ILASM 可用。是吗?

4

2 回答 2

2

显然,我可以编译Mono.Cecil以在 Compact Framework 下使用,这将允许我发出和加载程序集。

于 2009-12-17T00:34:32.370 回答
1

如果您想在 CF 上使用 Lambda-Expressions,则不需要 ILASM 或 System.Reflection.Emit。CF 的 C# 编译器支持 Lamba-Expressions,但 CF 基础库没有 Expressions 类。如果您使用正确命名(和正确实现)的表达式类添加对程序集的引用,则启用 Lambda-Expressions。

感谢上帝,已经实现了这个程序集(http://evain.net/blog/articles/2008/09/22/linq-expression-trees-on-the-compact-framework)-我将它与 Db4O 数据一起使用使用 LINQ IQueryableToolkit 访问和用于 SqlCE,它运行良好。

于 2009-12-16T08:55:37.627 回答