Есть ли хорошая обертка вокруг ILGenerator? [закрыто]

Я использую System.Reflection.Emit уже некоторое время, и нахожу это (а кто нет?) Столь же болезненным, как и склонный к ошибкам.

Знаете ли вы, есть ли хорошая оболочка вокруг Генератора IL, на которую я могу положиться, чтобы излучать IL более безопасным и простым способом, чем при игре напрямую с SRE?

Редактировать:

Я знаю, что манипулирование деревьями выражений определенно проще и безопаснее, чем прямое излучение IL, но они также имеют некоторые ограничения прямо сейчас. Я не могу создавать блоки кода, использовать циклы, объявлять и работать с несколькими локальными пользователями и т. Д. Нам нужно подождать, пока выйдет .NET 4 :)

Более того, я имею дело с кодовой базой, которая уже опирается на SRE.

Очевидно, что ILGenerator делает все, что мне нужно. Но я был бы признателен за большую помощь при манипулировании им. Когда я имею в виду оболочку ILGenerator, которая остается на довольно низком уровне, я думаю о чем-то, что могло бы обеспечить такие методы, как:

// 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)

Это действительно 3 наивных примера, но этого может быть достаточно, чтобы продемонстрировать, чего я ожидаю. Мы можем видеть это как набор методов расширения, но было бы неплохо иметь поддержку условных операторов и циклов, как вRunSharp, На самом деле, RunSharp довольно близок к тому, что я хочу, но он слишком абстрагирует ILGenerator и не раскрывает всю его функциональность.

Я не могу вспомнить, где, но я уже видел такого помощника в проекте с открытым исходным кодом.

Ответы на вопрос(3)

Ваш ответ на вопрос