Lluis Sanchez Gual has written a new code-generation API for Mono that is intermediate between the CIL generation of System.Reflection.Emit and generating C# code (which is, naturally, a tactic that limits you to what C# can perform). I've been writing a lot about little languages lately (and in articles that haven't yet been published) and this looks like a nice addition to one's workbench. One thing I really like is that there's a method CodeClass.PrintCode() that produces a C# representation of the generated CIL that's not necessarily compilable but gives an easily-readable view of the generated code.