ich eine Basisklasse CollidableObject
und ein paar geerbten Klassen namens Player
benannt haben, Enemy
, InertObject
usw.Iterierte durch alle Instanzen der Basisklasse und geerbten Klassen
Ich versuche, eine einfache Möglichkeit zu finden, iterieren durch alle Instanzen von ihnen, so habe ich zunächst eine Liste des Typs CollidableObject
erstellt und alle Instanzen der geerbten Klassen in dort.
Die Sache ist, dass wegen der Art des Polymorphismus, wenn ich folgendes
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.
}
Die Draw-Verfahren zu tun, die es nennt, ist die generische Draw-Methode aus der CollidbaleObject
Basis, nicht die außer Kraft gesetzt/neues aus die Klasse Player/Enemy/inertObject.
Wie komme ich dazu. Gibt es eine Möglichkeit, eine Sammlung von Objekten aus derselben Baumstruktur zu durchlaufen, deren geerbten Typ beizubehalten?
Ich weiß, das Neben ist, aber es besiegt Art der Punkt, wenn Sie die Methode verschiedene Argumente für jeden Subtyp zu versorgen haben.Wie auch immer, lesen Sie diesen Artikel über übergeordnete Methoden; Sie sollten eine virtuelle Methode haben und das override-Schlüsselwort verwenden, um es zu überschreiben: http://msdn.microsoft.com/en-us/library/ebca9ah3.aspx – Casey
* "nicht die überschriebene/neue aus dem Player/Enemy/inertObject Klasse. "- Welches ist es, überschrieben oder neu? – Harrison