2010-06-10 12 views
10

La falta de árboles de expresión en Compact Framework me ha molestado desde hace un tiempo, pero realmente no he buscado una solución.Linq Expression Trees en Compact Framework

Hoy he encontrado una publicación de blog sobre un System.Linq.Expressions alternativo construido sobre Mono System.Core y utilizado, p. por db4o (puede encontrarlo here).

Mi pregunta es: ¿ha utilizado esta biblioteca y, de ser así, cuáles han sido sus experiencias con ella (especialmente en lo que respecta al rendimiento)?

+0

No veo el punto, a menos que eventualmente obtengan 'System.Reflection.Emit' para funcionar en dispositivos 'compactos'. – leppie

+1

@leppie: bueno, el punto es tener consultas LINQ basadas en la expresión en el Marco Compacto. De esta forma, el desarrollador aún puede usar LINQ para escribir sus consultas, y db4o puede convertir la consulta LINQ basada en la expresión en su mecanismo de consulta subyacente. Para el caso donde la expresión no puede ser optimizada por db4o, la expresión es interpretada, para eludir la falta de SRE. –

Respuesta

2

Para LINQ to db4o, System.Linq.Expressions funciona bastante bien. Es probable que no sea el cuello de botella de una aplicación de Compact Framework consultar un origen no-LINQ a los objetos.

Si solo lo está utilizando para hacer algo de meta-programación, utilizando Compilar una y otra vez, no funcionará tan bien como en el escritorio, ya que es básicamente un intérprete basado en la reflexión. Por lo que vale, el intérprete pasa el conjunto completo de pruebas Mono para Expression Trees (es bastante consecuente).

El único error conocido está relacionado con a missing feature of the Compact Framework BCL, lo que hace imposible que csc emita un árbol de expresión adecuado cuando se trata de campos genéricos.

2

Esto no responde directamente a su pregunta, pero puede que le resulte interesante. IronPython y IronRuby se envían con el código fuente para la implementación .NET 4.0 de System.Linq.Expressions. También tienen un intérprete para Linq/DLR Expression Trees. Tomáš Matoušek fue capaz de hacer que IronRuby funcione en un emulador de Windows Phone utilizando este intérprete.

Cuestiones relacionadas