小编use*_*072的帖子

遍历基类和继承类的所有实例

我有一个名为基础类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类的重写/新方法.

我该如何解决这个问题.有没有办法迭代同一个树中的对象集合,但保持它们的继承类型?

c# polymorphism inheritance draw

6
推荐指数
1
解决办法
1509
查看次数

标签 统计

c# ×1

draw ×1

inheritance ×1

polymorphism ×1