継承したクラスを反復処理し、Enemy
、Player
InertObject
という名前継承したクラスのカップルなどすべての基底クラスのインスタンスと私は、基本クラスが<code>CollidableObject</code>名付けてい
は私が反復する簡単な方法を見つけようとしていますそれらのすべてのインスタンスを通して、私は最初にタイプCollidableObject
のリストを作成し、そこに継承されたクラスのすべてのインスタンスを配置しました。私はそれがCollidbaleObject
ベース、ないから上書き/新しいものからジェネリックDrawメソッドで呼び出すdrawメソッド
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.
}
次の手順を実行したときに
事は、そのために多型の性質のものですPlayer/Enemy/inertObjectクラスです。
これを回避するにはどうすればよいですか。同じツリーのオブジェクトのコレクションを反復する方法はありますか?継承された型を維持していますか?
私はこれが付随的であることを認識していますが、各サブタイプに異なる引数を指定する必要がある場合は、この点を克服するのは難しいことです。とにかく、メソッドのオーバーライドについてこの記事をチェックしてください。仮想メソッドを持ち、overrideキーワードを使ってそれをオーバーライドする必要があります:http://msdn.microsoft.com/en-us/library/ebca9ah3.aspx – Casey
* "Player/Enemy/inertObjectからのオーバーライド/新規のものではありませんクラス* " - どちらが優先され、上書きされるか、新しいものか? – Harrison