我一直在试图解决这个问题一段时间,我一直无法找到答案。 基本上,我有一个特定的方法,当被调用时,实际上执行另一个不同的方法,而不是我假定需要我修改方法指针指向的方法本身。交换方法指针
说这话时,
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