ILASM для компактных рамок? - PullRequest
2 голосов
/ 16 декабря 2009

Я работаю с деревьями выражений Linq (из порта db4o / Mainsoft / Mono) на Compact Framework. Поскольку System.Reflection.Emit не существует, я не могу скомпилировать свои LambdaExpressions в делегаты, что я хочу сделать из соображений производительности.

Я подумал, что, может быть, смогу преобразовать свое дерево выражений в IL и, по сути, таким образом обеспечить отсутствующую функциональность Emit, но потом понял, что мне придется либо запустить на нем ILASM на основе WinCE, либо написать собственные PE-заголовки метаданные

Я бы предпочел иметь в наличии ILASM. Это?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2009

Очевидно, я могу скомпилировать Mono.Cecil для использования в рамках Compact Framework, что позволит мне создавать и загружать сборки.

1 голос
/ 16 декабря 2009

Если вы хотите использовать лямбда-выражения на CF, вам не нужны ILASM или System.Reflection.Emit. Компилятор C # для CF поддерживает Lamba-Expressions, но базовые библиотеки CF не имеют классов Expressions. Если вы добавляете ссылку на сборку с правильными именованными (и правильно реализованными) классами для выражений, вы включаете лямбда-выражения.

Слава Богу, эта сборка уже реализована (http://evain.net/blog/articles/2008/09/22/linq-expression-trees-on-the-compact-framework) - я использую ее с доступом к данным Db4O и для SqlCE с LINQ IQueryableToolkit, и она хорошо работает.

...