Вопрос

Я работаю с деревьями выражений 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, и он работает хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top