Я хотел бы создать динамически некоторый метод, который будет принимать один параметр - экземпляр класса A, а затем будет выполнять метод B в переданном экземпляре A. B имеет параметр типа int. Итак, вот схема:
dynamicMethod(A a){
a.B(12);
}
Вот что я пробовал:
DynamicMethod method = new DynamicMethod(string.Empty, typeof(void), new[] { typeof(A) }, typeof(Program));
MethodInfo methodB = typeof(A).GetMethod("B", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[] { }, null);
ILGenerator gen = method.GetILGenerator();
gen.Emit(OpCodes.Nop);
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Ldarg_S, 100);
gen.Emit(OpCodes.Call, methodB);
Но компилятор говорит мне, что CLR не нашла метод. Не могли бы вы помочь мне с этим?
System.Linq.Expressions
для компиляции дерева выражений. Это легче. - person mmx   schedule 06.09.2009