【发布时间】:2015-07-28 09:20:41
【问题描述】:
我有一个名为 MyGameObjects 的 List<GameObject>。
我有一个名为DrawableGameObject 的类,它继承自GameObject。在我的列表中不仅有GameObjects,还有DrawableGameObjects。
DrawableGameObject 有一个名为 Animation 的属性,而 GameObject 没有。
我想做以下事情:
for (int i = 0; i < MyGameObjects.Count; ++i) {
if (MyGameObjects[i].GetType() == typeof(DrawableGameObject)) {
// use Animation property of MyGameObjects[i] here...
}
}
但它不会让我。 如果有办法做到这一点,请帮助我^^
【问题讨论】:
-
为什么不重构你的代码,让所有对象可以都有动画,但只有其中一些有动画,然后你可以使用基类编写代码,就好像动画将是可用,但它不会为任何东西设置动画。您应该研究 Liskovs 替换原则,这是 SOLID 原则的一部分。
-
想想虚拟方法。
标签: c# list oop inheritance types