Alimentando un objeto literal a ILGenerator
Food obj = ...;
ILGenerator gen = (...).GetILGenerator();
gen.Emit( ?? obj ?? ); // replace this
gen.Emit(OpCodes.Call, typeof(Person).GetMethod("Eat"));
Aparentemente no es posible empujar limpiamente obj en la pila de evaluación, pero estoy abierto a trucos feos que pueden comprometer, por ejemplo. portabilidad. ModuleBuilder.DefineInitializedData permite almacenar un System.Byte [] en el .sdata. ¿Algunas ideas?
Edición: el método generado se emite como parte de un nuevo ensamblaje.