Les arbres d’expression sont une fonctionnalité intéressante, mais quelles sont ses utilisations pratiques? Peuvent-ils être utilisés pour une sorte de génération de code ou de métaprogrammation?
Comme Jon le note, je les utilise pour fournir des opérateurs génériques avec .NET 3.5. Je les utilise également (encore dans MiscUtil) pour fournir un accès rapide aux constructeurs autres que ceux par défaut (vous ne pouvez pas utiliser Delegate.CreateDelegate
avec des constructeurs, mais Expression
fonctionne très bien).
Autres utilisations des arbres d'expression créés manuellement:
Mais vraiment, Expression est une manière très versatile d’écrire un code dynamique. Beaucoup plus simple que Reflection.Emit
, et pour mon argent, plus simple à comprendre que CodeDOM. Et dans .NET 4.0, vous avez encore plus d'options disponibles. Je montre les bases de l'écriture de code via Expression
sur mon blog .
Marc Gravell les a très bien utilisées dans MiscUtil pour implémenter des opérateurs génériques .