static void Main(string[] args)
{
 List<IGameObject> gameObjectList = new List<IGameObject>();

 int 発射座標 = 10;
 int ただのミサイルの進行方向 = 1;
 int 標的座標 = -100;
 標的 迎撃実験目標 = new 標的(標的座標);
 gameObjectList.Add(迎撃実験目標);
 gameObjectList.Add(new ただのミサイル(発射座標, ただのミサイルの進行方向));
 gameObjectList.Add(new ホーミングミサイル(発射座標, 迎撃実験目標.GameObjectInfo));

 int ループ上限 = 5;
 for (int i = 0; i < ループ上限; i++)
 {
  foreach (IGameObject gameObject in gameObjectList)
  {
   gameObject.Update();
   Console.WriteLine("{0}: {1} 位置 {2}", i, gameObject, gameObject.GameObjectInfo.Position);
  }
 }
 Console.ReadKey();
}

書いてみればええねん。もちろん動くで
実際のクラスのコードはいらんやろ