2010-06-10 2 views
10

Compact Framework에서 표현식 트리가 부족하여 당분간 저를 괴롭 혔지만 실제로 솔루션을 찾지 않았습니다.Compact Framework의 Linq 표현식 트리

오늘 저는 Mono System 위에 구축 된 다른 System.Linq.Expressions에 대한 블로그 게시물을 발견했습니다. db4o에 의해 (당신은 그것을 찾을 수 here).

내 질문은 -이 라이브러리를 사용 했습니까? 그렇다면 사용 경험 (특히 성능과 관련하여)은 무엇입니까?

+0

결국 '컴팩트'장치에서 작동하도록 System.Reflection.Emit을 얻지 않는 이상 요점을 보지 못합니다. – leppie

+1

@leppie : 글쎄, 요점은 Compact Framework에서 식 기반 LINQ 쿼리를 사용하는 것입니다. 이렇게하면 개발자는 LINQ를 사용하여 쿼리를 작성할 수 있으며 db4o는 LINQ 쿼리 기반 쿼리를 기본 쿼리 메커니즘으로 바꿀 수 있습니다. db4o에서 표현식을 최적화 할 수없는 경우 SRE 부족을 피하기 위해 표현식이 해석됩니다. –

답변

2

LINQ to db4o의 경우 System.Linq.Expressions은 매우 잘 작동합니다. LINQ가 아닌 개체 소스를 쿼리하는 Compact Framework 응용 프로그램의 병목 현상은 아닙니다.

일부 메타 프로그래밍을 수행하는 데 방금 사용하는 경우 컴파일을 반복하여 사용하면 기본적으로 리플렉션 기반 인터프리터이므로 데스크톱에서와 마찬가지로 성능이 떨어집니다. 그것이 가치있는 것을 위해, 통역사는 Expression Trees를위한 Mono 테스트 스위트 전체를 통과시킵니다.

버그가있는 유일한 알려진 버그는 a missing feature of the Compact Framework BCL과 관련되어 있으므로 일반 필드가 포함되어있을 때 csc가 적절한 표현 트리를 방출 할 수 없습니다.

2

질문에 직접 답변하지는 않지만 흥미로운 내용을 찾을 수 있습니다. IronPythonIronRuby은 .NET 4.0 구현 System.Linq.Expressions의 소스 코드와 함께 제공됩니다. 또한 Linq/DLR 표현식 트리에 대한 통역사도 있습니다. Tomáš Matoušek은이 인터프리터를 사용하여 Windows Phone 에뮬레이터에서 IronRuby를 작동시킬 수있었습니다.

관련 문제