2010-06-10 14 views
10

Brak drzewek wyrażeń w Compact Framework od pewnego czasu podsłuchiwał mnie, ale tak naprawdę nie szukałem rozwiązania.Drzewa wyrażeń Linq w zwartej strukturze

Dziś znalazłem wpis na blogu o alternatywnym System.Linq.Expressions zbudowanym na Mono System.Core i używanym np. przez db4o (można go znaleźć here).

Moje pytanie brzmi - czy korzystałeś z tej biblioteki, a jeśli tak, jakie były twoje doświadczenia z nią związane (zwłaszcza jeśli chodzi o wydajność)?

+0

Nie widzę sensu, chyba że ostatecznie otrzymam 'System.Reflection.Emit' do pracy na" kompaktowych "urządzeniach. – leppie

+1

@leppie: cóż, chodzi o to, że zapytania oparte na wyrażeniach LINQ w Compact Framework. W ten sposób deweloper może nadal używać LINQ do zapisywania zapytań, a db4o może przekształcić zapytanie LINQ oparte na wyrażeniu w jego mechanizm zapytań. W przypadku, gdy wyrażenie nie może być zoptymalizowane przez db4o, wyrażenie jest interpretowane, aby ominąć brak SRE. –

Odpowiedz

2

Dla LINQ do db4o, System.Linq.Expressions działa całkiem dobrze. Prawdopodobnie nie będzie to wąskie gardło aplikacji Compact Framework wysyłającej zapytania do źródła obiektów innych niż LINQ.

Jeśli używasz go tylko do wykonywania meta-programowania, używanie kompilacji na okrągło i na okrągło, nie będzie działać tak dobrze jak na pulpicie, ponieważ jest to w zasadzie interpretator oparty na odbiciu. O ile warto, interpreter przekazuje pełny zestaw testów Mono dla drzew wyrażeń (jest to całkiem konsekwentne).

Jedyny znany błąd związany jest z a missing feature of the Compact Framework BCL, uniemożliwiając csc wyemitowanie odpowiedniego drzewa wyrażeń, gdy zaangażowane są pola ogólne.

2

Nie odpowiada to bezpośrednio na twoje pytanie, ale może okazać się interesujące. IronPython i IronRuby statek z kodem źródłowym dla implementacji systemu .NET 4.0 System.Linq.Expressions. Mają także interpreter drzew wyrażeń Linq/DLR. Tomáš Matoušek był w stanie sprawić, że IronRuby działa na emulatorze Windows Phone przy użyciu tego interpretera.

Powiązane problemy