Expression
trees first appeared in Visual Studio 2008, where they were mainly used
by LINQ providers. You can use expression trees to represent code in a
tree-like format, where each node is an expression. You can also
convert expression trees into compiled code and run it. This
transformation enables dynamic modification of executable code as well
as the execution of LINQ queries in various databases and the creation
of dynamic queries. Expression trees in Visual Studio 2008 are
explained in Charlie Calvert's blog post Expression Tree Basics.
In
this post I'm going to show how expression trees were extended in
Visual Studio 2010 and how you can use them to generate dynamic methods
(a problem that previously could be solved only by emitting MSIL). But
although I strongly recommend reading Charlie's blog post first, I
still need to repeat some basics to spell out certain nuances.
Continue reading ...