【问题标题】:ILASM for Compact Framework?紧凑框架的 ILASM?
【发布时间】:2009-12-16 08:45:07
【问题描述】:

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

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

我更希望 ILASM 可用。 是吗?

【问题讨论】:

    标签: linq compact-framework cil reflection.emit ilasm


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您想在 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,它运行良好。

      【讨论】:

      • 我正在使用 System.Linq.Expressions 端口的修改版本。不过,我仍然想编译 LambdaExpression,因为解释它们会让我担心性能。
      • 你做了一些性能测试吗?我没有任何问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多