是否可以强制在类构造函数中调用方法,否则会抛出编译错误

本文关键字:错误 编译 方法 调用 构造函数 是否 | 更新日期: 2023-09-27 18:08:20

我有一个类Player,它继承自AnimatedSprite。AnimatedSprite有一个受保护的抽象方法loadAnimations, Player必须重载它才能加载实际的动画(因为动画会根据精灵图像而变化,它需要由AnimatedSprite派生的类来实现)。

然而,当我强制类用户实现该方法时,是否有一种方法可以强制用户实际调用该方法,最好是在Player构造函数中,以确保动画总是加载?我很确定c#没有任何语言功能来做到这一点(尽管我可能是错的),所以也许有一个更好的类设计模式,我可以实现我正在监督?

一如既往,提前感谢!

是否可以强制在类构造函数中调用方法,否则会抛出编译错误

实际上不建议在构造函数中调用虚方法,因为它们可能使用尚未初始化的状态(相关的构造函数尚未被调用)。

我个人希望有一个抽象方法,在构造函数之后调用,可能通过工厂:

static T Create<T>() where T : TheBase, new()
{
    T obj = new T();
    obj.Init();
    return obj;
}

我认为在构造函数内部调用方法不是一个好方法…

我习惯这样做:

 public abstract class AnimatedSprite
 {
      public void LoadAnimations() 
      {
           OnLoadAnimations();
      }
      protected abstract void OnLoadAnimations();
      protected virtual void OnNextFrame() { };
      ....          
 }

我假设AnimatedSprite是一个抽象类。只需在AnimatedSprite的构造函数中添加对方法的调用。