确保覆盖所有虚拟方法

Jes*_*olm 2 c# oop virtual-functions

我有一个基类,我需要确保在类专门化中覆盖所有虚拟方法.我不能使用抽象类/方法,因为我还需要在基本方法中执行一些代码.

我该怎么做呢?

public class BaseClass
{
  public virtual void DoStuff()
  {
    // do something
  }
}

public class DerivedClass : BaseClass
{
  public override void DoStuff()
  {
     // do derived work
     base.DoStuff();
  }
}
Run Code Online (Sandbox Code Playgroud)

dca*_*tro 11

使用钩子,更好地称为模板方法模式:

public abstract class BaseClass
{
  public void Start()
  {
    // do something
    OnStart();
    // do something else
  }
  protected abstract void OnStart();
}
Run Code Online (Sandbox Code Playgroud)

这采用了我最喜欢的好莱坞原则,许多框架的基础:不要打电话给我们,我们会打电话给你!