參考我可以回答這個問題:How would you audit ASP.NET Membership tables, while recording what user made the changes?是否可以截取一個你不擁有並且沒有創建的對象的靜態方法?
是否有可能截獲一個電話,從代碼來你不擁有,一個構造函數在一個密封的內部類,你不操縱的意圖自己返回前的對象?
具體的例子:
SqlMembershipProvider
,爲它的所有數據訪問,實例化一個連接輔助類,System.Web.DataAccess.SqlConnectionHolder
。
期望的結果是攔截此實例並在繼續執行之前在System.Web.DataAccess.SqlConnectionHolder
的ctor中打開的公共連接上執行操作。
更新: 因此,正如萊皮觀察到我的例子,我說我想要的不是我想要的。
目標現在System.Web.DataAccess.SqlConnectionHelper.GetConnection()
因此,我們可以攔截調用此方法?
internal static SqlConnectionHolder GetConnection(string connectionString, bool revertImpersonation)
這是可能的。如果是這樣,一個簡短的例子,將不勝感激。
我不認爲這是可能的。從查看Reflector中的代碼,似乎很難掌握正在使用的SqlConnection對象。 – leppie 2010-05-26 11:26:12
@leppie - 我可能會丟失一些東西,但我可以在糟糕的一天閉上眼睛和嘴巴充滿引用'內部SqlConnection _Connection;'。兩次。我錯過了什麼嗎? ;-) – 2010-05-26 11:42:18
詩人:你如何獲得'SqlConnectionHolder'實例?從我看到的這個每次都是通過'SqlConnectionHelper'類創建的。 – leppie 2010-05-26 12:43:08