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

标签 c# class inheritance xna

我有一个类 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/

相关文章:

c# - 使用 linq 填充子对象

c# - 如何获得位数组的所有排列

c# - 如何在 C# 中转换为字节时截断字符串?

c++ - 从 C++ 中的另一个源访问类,初始化构造函数时出现问题

C++动态加载类

c# - 无法插入 OpenXmlElement "newChild",因为它是树的一部分

java - instanceof 与 getClass( )

JavaScript Prototype 属性未添加到其继承的对象中

java - 遍历节点类被另一个类继承的树

c++ - 为什么此代码会引发 LNK2019 错误?