如何在调用自己的植入之前强制继承类的方法实现调用基方法?



我写了一些非密封的类,其中包含 3 个虚拟公共方法和一个私有方法。

我公开了这个类,我所有的开发组成员都可以使用这个类(包括继承和覆盖虚拟公共方法(。

其中一个私有方法名称是"PrivateMethod77(("。

每次调用公共方法'PublicMethod77(('=>时,在方法实现的第一行调用'PrivateMethod77'(在这一行之后有更多的隐含逻辑(。

我想保留这个逻辑并"强制"方法 PublicMethod77 的继承和覆盖,以调用 PrivateMethod77 方法作为 PublicMethod77 的第一行

有没有办法做到这一点?

我不认为你可以强制继承类总是首先调用方法的超级实现,但是:

通常,对于以下情况,我使用模板方法模式:

public abstract class TemplateEnforcer
{
private void TheSame()
{
Console.WriteLine("Everyone calls me;");
}
public void TemplateMethod()
{
this.TheSame();
this.NeedsImplementation();
}
protected abstract void NeedsImplementation();
}
public class TemplateImplementer : TemplateEnforcer
{
protected override void NeedsImplementation()
{
Console.WriteLine("Implemented in TemplateImplementer");
}
}

此调用的代码输出new TemplateImplementer().TemplateMethod()

//Everyone calls me;
//Implemented in TemplateImplementer

模板方法模式的优点:

  1. 强制实现抽象方法。
  2. 代码保持干燥。
  3. 避免错误,并指导开发人员进行开发。

最新更新