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

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

我更愿意使用 ILASM。 是吗?

有帮助吗?

解决方案

显然,我可以编译 Mono.Cecil能做到以下的精简框架使用,这将让我发射和负载组件。

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top