Pergunta

Eu estou trabalhando com árvores de expressão Linq (a partir do db4o / porto Mono Mainsoft /) no Compact Framework. Desde System.Reflection.Emit não existe, não pode compilar meus LambdaExpressions em delegados, o que eu quero fazer por motivos de desempenho.

Eu pensei que talvez eu poderia transformar minha árvore de expressão para IL e, basicamente, fornecer os desaparecidos funcionalidade Emit dessa maneira, mas então eu percebi que eu teria que quer executar um ILASM baseado em WinCE sobre ele ou escrever meus próprios cabeçalhos PE e assmebly metadados.

Eu prefiro ter ILASM disponível. É?

Foi útil?

Solução

Aparentemente, eu pode compilar Mono.Cecil para uso sob o Compact Framework, que será permita-me emitir e montagens de carga.

Outras dicas

Se você quiser usar um Lambda-Expressions na CF você não precisa ILASM ou System.Reflection.Emit. O compilador C # para CF suporta não Lamba-Expressões mas as bibliotecas base CF não tem as classes Expressões. Se você adicionar referência a montagem com classes corretas chamado (e corretas implementadas) para expressões, você ativar Lambda-Expressions.

Graças a Deus, há essa montagem já implementadas ( http://evain.net/blog/articles/2008/09/22/linq-expression-trees-on-the-compact-framework ) - eu usá-lo com db4o acesso a dados e para SQLCE sagacidade LINQ IQueryableToolkit, e funciona bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top