我想问这个问题是因为我的代码有一些安全机制。 这似乎没用,但它已经让我失去了很多时间调试。
public class AnimalClass
{
virtual void Mod{}
virtual void UpdateSomeValues{}
}
public class CatClass : AnimalClass
{
override void Mod{}
override void UpdateSomeValues{}
}
在调用Cat
的{{1}}函数时,C#中是否有办法自动启动UpdateSomeValues
的{{1}}函数(无需手动调用它) Cat
的{{1}}功能)?
如果可能的话,对所有派生类都一样吗?
答案 0 :(得分:2)
没有。您可以通过引入派生类可以覆盖的另一个受保护方法来解决该问题,并在完成所有必要的处理后对其进行公共调用:
public class AnimalClass
{
public void Mod()
{
// do stuff
ModImpl();
}
protected virtual ModImpl() {}
}
如果他们想要进行一些额外的处理,派生类会实现ModImpl()
,并确保在// do stuff
被调用时Mod
仍然发生。