У меня есть два типа / классы Missile
и TrackingMissile
. Где TrackingMissile : Missile
и TrackingMissiles
переопределяют его базовый Update
метод.
Ракеты Update
Реализация:
void Update()
В то время как я хочу, чтобы у типа отслеживающей ракеты был дополнительный аргумент.
void Update(Vector2 target)
Затем я хочу собрать ракету с List<Missile>
. Если бы это был Typescript, я бы реализовал его с объединенным типом, и во время итерации я бы сделал какое-то сопоставление с образцом.
В основном нацеливаясь на этот недопустимый код:
List<Missile> missiles = new List<Missile> {
new Missile(...),
new TrackingMissile(...)
};
foreach (var missile in missiles) {
if (missile is Missile) missile.Update()
else if (missile is TrackingMissile) missile.Update(target)
}
Здесь кажется, что это TrackingMissile
как-то разыгрывается где-то или такое. Один из способов, который я мог бы сделать, - это реализовать два списка разных типов, но это желательно, так как он не поддерживается, когда я хочу реализовать больше производных от Missile
.
tldr: как лучше всего поддерживатьколлекция разных типов и во время итерации запускаются разные логики в зависимости от их типа.