簡體   English   中英

如何在調用自己的植入之前強制繼承類的方法實現調用基本方法?

[英]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

模板方法模式的優點:

  1. 抽象方法的實現是強制的。
  2. 代碼保持干燥。
  3. 避免了錯誤,並指導開發人員進行開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM