¿Hay una buena envoltura alrededor de ILGenerator? [cerrado]

Estoy usando System.Reflection.Emitir por un tiempo y encontrarlo (¿quién no?) Tan doloroso como propenso a los errores.

¿Sabe si hay una buena envoltura alrededor del generador de IL, algo en lo que puedo confiar para emitir IL de una manera más segura y más fácil que con jugar directamente con SRE?

Editar:

Sé que manipular árboles de expresión es definitivamente más fácil y más seguro que emitir IL directamente, pero ahora también tienen algunas restricciones. No puedo crear bloques de código, usar bucles, declarar y trabajar con varios locales, etc. Necesitamos esperar hasta que salga .NET 4 :)

Además, estoy tratando con una base de código que ya se basa en SRE.

Obviamente, ILGenerator hace todo lo que necesito. Pero agradecería más ayuda a la hora de manipularlo. Cuando me refiero a un envoltorio ILGenerator, que se mantiene en un nivel bastante bajo, pienso en algo que podría proporcionar métodos como:

// Performs a virtual or direct call on the method, depending if it is a 
// virtual or a static one.
Call(MethodInfo methodInfo)

// Pushes the default value of the type on the stack, then emit 
// the Ret opcode.
ReturnDefault(Type type)

// Test the object type to emit the corresponding push 
// opcode (Ldstr, Ldc_I*, Ldc_R*, etc.)
LoadConstant(object o)

Es realmente 3 ejemplos ingenuos, pero podría ser suficiente para demostrar lo que espero. Podemos verlo como un conjunto de métodos de extensión, pero podría ser bueno tener soporte para sentencias condicionales y bucles como enRunSharp. De hecho, RunSharp está bastante cerca de lo que quiero, pero abstrae demasiado al ILGenerator y no expone toda su funcionalidad.

No puedo recordar dónde, pero ya vi a un colaborador de este tipo en un proyecto de código abierto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta