我有一个名为基础类CollidableObject和一个名为夫妇继承类的Player,Enemy,InertObject,等.
我试图找到一种简单的方法来遍历它们的所有实例,所以我最初创建了一个类型列表CollidableObject并将所有继承类的实例放在那里.
问题在于,由于多态性的性质,当我做以下事情时
foreach (CollidableObject CollidableObject in collidableObjects)
{
if (CollidableObject is Player)
{
CollidableObject.Draw(spriteBatch, testPlayerTexture);
}
// Then the same prodedure for each type of CollidableObject.
// Might change to switch or something.
}
Run Code Online (Sandbox Code Playgroud)
它调用的draw方法是来自CollidbaleObjectbase 的泛型Draw方法,而不是来自Player/Enemy/inertObject类的重写/新方法.
我该如何解决这个问题.有没有办法迭代同一个树中的对象集合,但保持它们的继承类型?