我有一个类 Player,它继承自 AnimatedSprite。 AnimatedSprite 有一个 protected 抽象方法 loadAnimations,Player 必须重写它才能加载实际的动画(因为动画会根据 sprite 图像而变化,它需要由从 AnimatedSprite 派生的类实现)。
但是,当我强制类用户实现该方法时,是否有办法强制用户实际调用此方法,最好是在 Player 构造函数中,以确保始终加载动画?我很确定 C# 没有任何语言功能来执行此操作(尽管我可能是错的),所以也许有一个更好的类设计模式可供我实现,我正在监督?
一如既往,提前致谢!
最佳答案
实际上不建议在构造函数中调用虚方法,因为它们可能使用尚未初始化的状态(尚未调用相关构造函数)。
就我个人而言,我只是有一个抽象方法,您可以在构造函数之后调用它,也许是通过工厂:
static T Create<T>() where T : TheBase, new()
{
T obj = new T();
obj.Init();
return obj;
}
关于c# - 你能强制在类构造函数中调用一个方法,否则会抛出编译错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7378749/