Thursday, 15 September 2011

c# - How to emit code that calls a dynamic method? -



c# - How to emit code that calls a dynamic method? -

i'm trying emit code calls dynamic method emitted earlier:

ilgenerator.emit(opcodes.call, dynamicmethod.getmethodinfo());

it troughs exception saying: "methodinfo must runtime methodinfo object"

is there way convert dynamic method runtime method?

from can tell you've compiled dynamicmethod delegate using createdelegate. however, if utilize dynamicmethod object straight parameter emit should work. demonstration:

using system.reflection; using system.reflection.emit; public class programme { public static void main(string[] args) { var dynmethod = new dynamicmethod("test1", typeof(void), type.emptytypes); var gen = dynmethod.getilgenerator(); gen.emitwriteline("test"); gen.emit(opcodes.ret); var dynmethod2 = new dynamicmethod("test2", typeof(void), type.emptytypes); gen = dynmethod2.getilgenerator(); gen.emit(opcodes.call, dynmethod); gen.emit(opcodes.ret); var method2 = (action)dynmethod2.createdelegate(typeof(action)); method2(); } }

c# reflection reflection.emit ilgenerator

No comments:

Post a Comment