Ну, это возможно, но довольно неловко. Проблема в том, что класс MethodBody позволяет вам получать только IL в виде массива байтов. Однако метод ILGenerator.Emit () не перегружен, чтобы просто скопировать эти байты в динамический метод. Требуется использовать правильную перегрузку для генерации правильной инструкции IL.
Это важно не только для того, чтобы всегда генерировать правильный IL, но и для сбора информации о динамическом методе. В частности, размер стека, который требуется для метода. Единственный способ использовать ILGenerator.Emit () - это написать код, который сначала декомпилирует байты в соответствующие им инструкции IL. Это не невозможно, просто много работы. Я не могу думать о сокращении.