首页 > 解决方案 > 从超类调用重载构造函数后要调用的强制方法

问题描述

我正在做一个 unity3d 项目,我有一个抽象对象,我将从其他对象调用。我希望我的所有子类在完成构建后调用某个虚拟方法。本质上,将调用基础构造函数,然后是重载构造函数,最后是我的方法,但我希望从基础对象定义这种行为。

标签: c#unity3d

解决方案


您可以强制您的子类实现一个名为 Initialize() 的抽象方法,然后选择基类中的调用顺序:

    public abstract class MyBaseClass
    {
        public abstract void Initialize();

        public MyBaseClass()
        {
            // Code of the constructor of the base class

            // Calling the subclass 
            Initialize();

            // Finally call the special method
            MySpecialMethod();
        }

        private void MySpecialMethod()
        {
            // Some code here
        }
    }

    public class MySubclass : MyBaseClass
    {
        public override void Initialize()
        {
            // Some code here
        }
    }

推荐阅读