对所有派生的 类 应用循环条件检查

Apply recurring conditional check to all derived classes

我得到了一个带有抽象 Work() 方法的工作库 class。这在我继承的 classes.overridden/implemented 中得到 overridden/implemented。

我想要实现的是对所有派生的 classes 应用中止条件。模板方法模式在这里似乎对我没有帮助,因为我需要在我的抽象 Work()-class.

中进行此检查

一个解决方法是使 Work() 成为虚拟的,但我不再强制执行它(我想做的):

public abstract class First
{
    protected virtual void Work()
    {
        //do stuff
    }
}

public class Second : First
{
    protected override void Work()
    {
        base.Work();
    }
}

有什么方法可以实现我的目标吗?

The template method pattern doesn't seem to help me here, because I need this check to occur in my abstract Work()

您选择了正确的模式,但没有正确应用它。

模板方法模式背后的想法是使 Work 成为非虚拟的,并提供一个单独的方法,虚拟的或抽象的,供子classes 重写。这样,所有可能中止作业的检查都将在基础 class 的 Work 函数中执行,而派生的 classes 将提供检查时要执行的操作的实际实现已成功:

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
    }
}