你能强制在类构造函数中调用一个方法,否则抛出编译错误?

Coo*_*per 4 c# inheritance xna class

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

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

一如既往,提前谢谢!

Mar*_*ell 10

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

就个人而言,我只有一个抽象的方法,你可以构造函数调用,也许通过工厂:

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