![](/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.