0
通常一個的ILGenerator動態生成的方法,當我想打電話給在被編寫方法上同類型的其他的ILGenerator對象動態方法我做了以下內容:呼籲在同類型
generator.Emit(OpCodes.Ldarg_0); // reference to the current object
generator.Emit(OpCodes.Ldstr, "someArgument");
generator.Emit(OpCodes.Call, methodBuilder); //this methodbuilder is also defined on this dynamic type.
但是,我遇到了以下問題:我無法引用要調用的方法的方法構建器,因爲它是由另一個框架生成的(我只獲取對當前TypeBuilder的引用)。該方法被定義爲受保護的虛擬(和重寫在methodbuilder我不能得到一個參考)在基類當前的動態型的,我可以通過執行此獲得對它的引用:
generator.Emit(OpCodes.Ldarg_0); // reference to the current object
generator.Emit(OpCodes.Ldstr, "someArgument");
generator.Emit(OpCodes.Call, baseType.GetMethod("SomeMethodDefinedInBaseClassThatWasOverridenInThisDynamicType"));
問題這是調用基類型的方法而不是重寫方法。
有沒有什麼辦法可以得到一個方法構建器的引用,只引用定義它的類型構建器?或者有沒有辦法使用ILGenerator調用方法,而不必將「MethodInfo」對象傳遞給它?
工作,謝謝。 – 2010-05-08 18:32:25