![](/img/trans.png)
[英]Apply all IEntityTypeConfiguration derived classes in EF Core
[英]Apply recurring conditional check to all derived classes
我有一个带有抽象Work()方法的工作基础类。 这在我继承的类中被重写/实现。
我要实现的是将中止条件应用于所有派生类。 模板方法模式似乎在这里没有帮助,因为我需要在我的抽象Work()类中进行此检查。
解决方法是将Work()虚拟化,但随后我不再强制实施它(我想做的事情):
public abstract class First
{
protected virtual void Work()
{
//do stuff
}
}
public class Second : First
{
protected override void Work()
{
base.Work();
}
}
有什么办法可以实现我的目标?
模板方法模式似乎在这里没有帮助,因为我需要在我的抽象
Work()
此检查
您选择了正确的模式,但是没有正确应用它。
模板方法模式背后的想法是使Work
非虚拟,并为子类提供单独的虚拟或抽象方法。 这样,所有可能中止工作的检查都将在基类的Work
函数中执行,而派生类将为检查成功后的操作提供实际的实现:
public abstract class First {
public void Work() {
if (!CheckPreconditions()) {
// Abort the job
return;
}
DoWork();
}
protected abstract void DoWork();
}
public class Second : First {
protected override void DoWork() {
// Do the actual work here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.