首页 > 解决方案 > 要求子类在覆盖中调用 base.Foo()

问题描述

我正在开发一个使用大量继承的 Unity 项目。我有一个抽象基类,我希望它的子类总是调用它的方法(例如Awake)。

我没有太多使用属性 - 有没有办法向我的 ABC 的 Awake 方法添加一个属性,如果它们在Awake()没有调用base.Awake()其实现的情况下覆盖,则会导致子类记录错误?

谢谢!

标签: c#attributesoverridingabc

解决方案


你可以这样:

public class A 
{
    public void Awake() 
    {
        Console.WriteLine("Everybody does X on awake");
        AwakeExtra();
    }

    public virtual void AwakeExtra() => Console.WriteLine("'A' also does A on awake");
}

public class B : A 
{
    public override void AwakeExtra() => Console.WriteLine("'B' also does B on awake");
}

推荐阅读