我一直在試圖解決這個問題一段時間,我一直無法找到答案。 基本上,我有一個特定的方法,當被調用時,實際上執行另一個不同的方法,而不是我假定需要我修改方法指針指向的方法本身。交換方法指針
說這話時,
public class A : OtherRandomClass
{
protected void SomeMethod()
{
//code
}
}
public class B
{
public void OtherMethod()
{
//code that I want to execute when SomeMethod is called
}
}
我不能不幸修改類A的來源,但我想嘗試做的是作出的someMethod任何呼叫實際調用OtherMethod而防止的someMethod本身被調用,我不想訴諸交換方法機構。
我知道這是多麼糟糕的做法,但我使用的框架只是簡單的愚蠢,我沒有其他選擇。
任何方法呢?
編輯:找到我正在尋找的,感謝任何試圖幫助的人!
在您控制的代碼中,「SomeMethod」的所有* call網址*是否也是不可修改的?另外,你的示例方法是實例方法,'A'和'B'似乎沒有任何繼承關係 - 在這樣的調用過程中,B的實例在哪裏? –
是https://stackoverflow.com/questions/25366243/intercept-method-calls的使用? – mjwills
@Damien_The_Unbeliever無法真正控制任何調用SomeMethod的網站。 A和B是完全獨立的類,在繼承方面彼此不相關。 'B'實例將在'A'後面實例化。另外,@mjwills,我將不得不更多地考慮這一點,但看起來並不像它。 – Trivaxy