我正在尝试使用 C# 制作 2D 游戏(使用与问题无关的 XNA)。我制作了一个基本的瓷砖类,游戏中的所有瓷砖都将从中继承基本功能,例如如何将自己绘制到屏幕上等等。
然后,我拥有的是该基础瓷砖类的列表,其中包含从基类继承的所有其他类,即:门、墙、地板瓷砖等。
List<TileBase> tileList = new List<TileBase>();
...
tileList.Add(new Door(arguments));
tileList.Add(new Wall(arguments));
当我只想影响该列表中的某种类型的类时,问题就会出现。例如,门具有 Open()、Close() 和 Toggle() 的某些函数。如果我尝试简单地创建一个循环,循环遍历列表中的每个 Door 类:
foreach(Door door in tileList)
{
door.Toggle();
}
我收到一个错误:
"Unable to cast object of type '...Tiles.Wall' to type '...Tiles.Door'."
所以基本上,我有一个充满不同课程的列表。我如何在循环中到达一个类中的特定函数而不使程序崩溃,因为它在另一种类型的没有所述函数的类上尝试它。