2016-07-04 59 views
0

目前我正在試圖實現使用TypeBuilder動態創建,從本身從的DbContext派生的類派生新類的類(督察動態類間接繼承從DbContext)。GetMethod得到的Dispose(BOOL處置)動態

要覆蓋(與DefineMethod + DefineMethodOverride)的處置類我首先需要找回它使用GetMethod。我能夠通過檢索SaveChanges()方法如下:

typeof(TBaseDbContext).GetMethod("SaveChanges") 

然而的Dispose(BOOL處置)是完全不同的,因爲它是受保護的,有爭論。

縮小在我來到了下面的代碼的問題:

 MethodInfo disposeOfBase = 
      typeof(DbContext).GetMethod("Dispose", 
       BindingFlags.NonPublic, 
       null, 
       CallingConventions.Any, 
       new Type[] { typeof(bool) }, 
       null); 

結果在disposeOfBase爲空。我嘗試過不同的組合,但我認爲上面應該接近正確。我不知道爲什麼沒有找到Dispose

我在這裏做錯了什麼?如何修改代碼以便disposeOfBase擁有受保護的Dispose方法DbContext的信息?

+3

嘗試'BindingFlags.NonPublic | BindingFlags.Instance'。您必須指定實例或靜態來獲取方法。 – Tomer

回答