繁体   English   中英

Force方法从基类调用base方法

[英]Force method to call base method from base class

如果我使用“override”属性创建方法,派生方法将不会自动调用基本方法实现,我将需要使用“base”关键字手动调用它,如下所示:

public class A
{
    public virtual void Say()
    {
        Console.Write("A");
    }
}

public class B : A
{
    public override void Say()
    {
        base.Say();
        Console.Write("B");
    }
}

因此,只有在这种情况下,字符串“A”和“B”才会写入控制台。 所以问题是如何摆脱“base.Say();” 线? 所以我想强制每个派生方法“Say”从基类调用base方法。 可能吗? 我正在寻找任何解决方案,即使我将被迫使用其他关键字

虽然无法直接实现此目的,但您可以通过编写自己的虚拟方法来获得相同的效果,该方法在执行某些固定操作后调用虚拟方法:

public class A
{
    public void Say()
    {
        Console.Write("A");
        SayImpl();
    }
    protected virtual void SayImpl()
    {
        // Do not write anything here:
        // for the base class the writing is done in Say()
    }
}

public class B : A
{
    protected override void SayImpl()
    {
        Console.Write("B");
    }
}

现在任何继承自A并实现SayImpl()都会在其打印输出前加上A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM