Metaprogramming in .NET