是否可以强制在类构造函数中调用方法,否则会抛出编译错误
本文关键字:错误 编译 方法 调用 构造函数 是否 | 更新日期: 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
的构造函数中添加对方法的调用。