Para generar código en .NET yo uso el namespace CodeDom. Hay cosas que son fáciles de generar y otras un poco más complicadas, por ejemplo, para generar código que tenga Generics hay que hacer lo siguiente:
CodeTypeDeclaration newClass = new CodeTypeDeclaration("MyCollectionClass");
newClass.BaseTypes.Add( new CodeTypeReference("Collection",
new CodeTypeReference[] {
new …