2010-06-10 13 views
10

La mancanza di alberi di espressione in Compact Framework mi ha infastidito da tempo, ma non ho davvero cercato una soluzione.Alberi di espressione Linq in quadro compatto

Oggi, ho trovato un post sul blog su un System.Linq.Expressions alternativo costruito su Mono System.Core e utilizzato per es. di db4o (lo trovi here).

La mia domanda è: avete utilizzato questo catalogo e, in caso affermativo, quali sono state le vostre esperienze (soprattutto per quanto riguarda le prestazioni)?

+0

Non vedo il punto, a meno che non ottengano 'System.Reflection.Emit' per lavorare su dispositivi 'compatti'. – leppie

+1

@leppie: beh, il punto è avere query LINQ basate su espressioni su Compact Framework. In questo modo, lo sviluppatore può ancora utilizzare LINQ per scrivere le sue query e db4o può trasformare la query LINQ basata sull'espressione nel suo meccanismo di query sottostante. Nel caso in cui l'espressione non possa essere ottimizzata da db4o, l'espressione viene interpretata per aggirare la mancanza di SRE. –

risposta

2

Per LINQ to db4o, System.Linq.Expressions funziona piuttosto bene. Probabilmente non sarà il collo di bottiglia di un'applicazione Compact Framework che interroga un LINQ non sorgente di oggetti.

Se lo si utilizza solo per eseguire una meta-programmazione, utilizzando Compile più e più volte, non funzionerà altrettanto bene sul desktop, in quanto si tratta fondamentalmente di un interprete basato su riflessioni. Per quello che vale, l'interprete passa l'intera suite di test Mono per Expression Trees (è piuttosto conseguente).

L'unico bug noto è relativo a a missing feature of the Compact Framework BCL, rendendo impossibile per csc l'emissione di un albero di espressioni appropriato quando sono coinvolti campi generici.

2

Questo non risponde direttamente alla tua domanda, ma potresti trovarlo interessante. IronPython e IronRuby vengono forniti con il codice sorgente per l'implementazione .NET 4.0 di System.Linq.Expressions. Hanno anche un interprete per Linq/DLR Expression Trees. Tomáš Matoušek è stato in grado di far funzionare IronRuby su un emulatore di Windows Phone utilizzando questo interprete.

Problemi correlati