[英]How to force inheriting class's method implementation to call base method before invoke own implantation?
我写了一些未密封的类,其中包含3个虚拟公共方法和一个私有方法。
而且我公开了这个类,我的所有开发组成员都可以使用这个类(包括继承和覆盖虚拟公共方法)。
私有方法名称之一是“ PrivateMethod77()”。
每次调用公共方法'PublicMethod77()'=>时,在方法实现的第一行中调用'PrivateMethod77'(在此行之后有更多的蕴含逻辑)。
我想保持这种逻辑,并“强制”方法PublicMethod77的继承和重写,以将PrivateMethod77方法作为PublicMethod77的第一行来调用
有办法吗?
我不认为您可以强制继承类始终始终首先调用方法的超级实现,但是:
通常,对于以下情况,我使用Template方法模式 :
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
模板方法模式的优点:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.