自动触发基类功能

时间:2016-04-09 22:58:00

标签: c#

我想问这个问题是因为我的代码有一些安全机制。 这似乎没用,但它已经让我失去了很多时间调试。

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}}功能)?

如果可能的话,对所有派生类都一样吗?

1 个答案:

答案 0 :(得分:2)

没有。您可以通过引入派生类可以覆盖的另一个受保护方法来解决该问题,并在完成所有必要的处理后对其进行公共调用:

public class AnimalClass
{
    public void Mod() 
    {
        // do stuff
        ModImpl();
    }
    protected virtual ModImpl() {}
}

如果他们想要进行一些额外的处理,派生类会实现ModImpl(),并确保在// do stuff被调用时Mod仍然发生。