我想動態創建一些方法,它將接受單個參數 - 類A的實例,然後將在傳遞的A實例中執行方法B. B的參數類型爲int。因此,這裏的模式:Reflection.Emit動態創建方法
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'來代替編譯表達式樹。這很容易。 – 2009-09-06 03:09:15