Expression trees are a nice feature, but what are its practical uses? Can they be used for some sort of code generation or metaprogramming or some such?
As Jon notes, I use them to provide generic operators with .NET 3.5. I also use them (again in MiscUtil) to provide fast access to non-default constructors (you can't use Delegate.CreateDelegate
with constructors, but Expression
works fine).
Other uses of manually created expression trees:
But really, Expression is a very versatile way of writing any dynamic code. Much simpler than Reflection.Emit
, and for my money, simpler to understand than CodeDOM. And in .NET 4.0, you have even more options available. I show the fundamentals of writing code via Expression
on my blog.