2009-12-16 4 views
2

Compact Framework에서 Linq 표현 트리 (db4o/Mainsoft/Mono 포트)를 사용하고 있습니다. System.Reflection.Emit가 존재하지 않기 때문에, 퍼포먼스를 위해 수행하고자하는 델리게이트로 LambdaExpressions를 컴파일 할 수 없습니다.ILASM for Compact Framework?

필자는 익스프레션 트리를 일리노이로 변환하고 기본적으로 실종 된 Emit 기능을 제공한다고 생각했지만, WinCE 기반 ILASM을 실행하거나 자체 PE 헤더를 작성해야한다는 것을 깨달았습니다. 및 assmebly 메타 데이터.

ILASM을 사용하는 것이 훨씬 편합니다. 그것은 무엇입니까?

답변

2

확실히 Compact Framework에서 Mono.Cecil을 사용하여 어셈블리를 내보내고로드 할 수 있습니다.

1

CF에서 람다 - 표현식을 사용하려면 ILASM 또는 System.Reflection.Emit이 필요하지 않습니다. CF 용 C# 컴파일러는 Lamba-Expressions를 지원하지만 CF 기본 라이브러리에는 Expressions 클래스가 없습니다. 식에 올바른 명명 된 클래스를 사용하여 어셈블리에 대한 참조를 추가하면 람다 식을 사용할 수 있습니다.

신에게 감사드립니다.이 어셈블리는 이미 구현되어 있습니다 (http://evain.net/blog/articles/2008/09/22/linq-expression-trees-on-the-compact-framework) - Db4O 데이터 액세스와 SqlCE Wit LINQ IQueryableToolkit에 사용하고 잘 작동합니다.

+0

System.Linq.Expressions 포트를 수정 한 버전을 사용하고 있습니다. LambdaExpression을 컴파일하고 싶기 때문에 해석을하기 때문에 성능에 대해 걱정하게됩니다. – codekaizen

+0

그리고 성능 테스트를 수행 했습니까? 나는 그것에 아무런 문제가 없다. – TcKs

+0

예 - 초기 사용자 테스트는 성능 문제를 나타냅니다. – codekaizen