ILASM for Compact Framework?

时间:2009-12-16 08:45:07

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

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

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

我更愿意提供ILASM。 是吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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数据访问和SqlCE机智LINQ IQueryableToolkit,它运行良好。