2009-12-16 59 views
2

我正在使用Compact Framework上的Linq表達式樹(來自db4o/Mainsoft/Mono端口)。由於System.Reflection.Emit不存在,因此我無法將我的LambdaExpressions編譯爲委託,因爲性能原因我想這樣做。用於Compact Framework的ILASM?

我想也許我可以將我的表達式樹轉換爲IL,並且基本上提供了這種方式缺少的Emit功能,但後來我意識到我必須在其上運行基於WinCE的ILASM或者編寫自己的PE頭並可以詮釋元數據。

我寧願讓ILASM可用。 是嗎?

回答

2

顯然,我可以在Compact Framework下編譯Mono.Cecil,這可以讓我發射和加載程序集。

1

如果要在CF上使用Lambda表達式,則不需要ILASM或System.Reflection.Emit。 CF的C#編譯器支持Lamba-Expressions,但CF庫庫沒有表達式類。如果您爲表達式添加了具有正確命名(並且正確實施)的類的組合引用,則啓用Lambda表達式。

感謝上帝,這個程序集已經實現(http://evain.net/blog/articles/2008/09/22/linq-expression-trees-on-the-compact-framework) - 我使用它與Db4O數據訪問和SqlCE的智慧LINQ IQueryableToolkit,它運作良好。

+0

我正在使用System.Linq.Expressions那個端口的修改版本。不過,我仍然想編譯LambdaExpression,因爲解釋它們會讓我擔心性能。 – codekaizen 2009-12-16 08:57:36

+0

你做過一些性能測試嗎?我沒有任何問題。 – TcKs 2009-12-16 09:08:06

+0

是 - 初始用戶測試指示性能問題。 – codekaizen 2009-12-16 16:54:00