public void Run() { IEnumerable <Type> consoleTypes = PlugIns(typeof(IGameConsole)); IList <IGameConsole> games = consoleTypes.Select(st => (IGameConsole)Activator.CreateInstance(st)).ToList(); int menuChoice = -1; while (menuChoice != 0) { PrintHighScores(); Console.WriteLine("0 .. Quit"); Console.WriteLine("Or fancy playing one of these games?"); for (int i = 0; i < games.Count; i++) { Console.WriteLine("{0} .. {1}", i + 1, games[i].Name()); } bool numeric = Int32.TryParse(Console.ReadLine(), out menuChoice); if (numeric) { if (menuChoice <= games.Count && menuChoice > 0) { int indexOfGameInList = menuChoice - 1; IGameConsole console = games[indexOfGameInList]; int score = console.Run(); HighScore(console.Name(), score); } } } }