ILASM для Compact Framework?
-
19-09-2019 - |
Вопрос
Я работаю с деревьями выражений Linq (из порта db4o/Mainsoft/Mono) в Compact Framework.Поскольку System.Reflection.Emit не существует, я не могу скомпилировать свои LambdaExpressions в делегаты, что я хочу сделать из соображений производительности.
Я подумал, что, может быть, я мог бы преобразовать свое дерево выражений в IL и таким образом обеспечить недостающую функциональность Emit, но потом я понял, что мне придется либо запустить на нем ILASM на основе WinCE, либо написать свои собственные PE-заголовки и метаданные сборки.
Я бы предпочел иметь ILASM. Это?
Решение
Судя по всему, я могу собрать Моно.Сесил для использования в рамках Compact Framework, что позволит мне создавать и загружать сборки.
Другие советы
Если вы хотите использовать лямбда-выражения в 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, и он работает хорошо.