public void ShowMenu(IMenu currentMenu) { topLevelMenu = currentMenu; List <MenuItem> items = new List <MenuItem>(); currentMenu.ConfigureMenuItems(this, items); Console.Clear(); Console.WriteLine(currentMenu.Title); for (int i = 0; i < items.Count; i++) { Console.WriteLine($"[{i + 1}]: {items[i].Text}"); } Console.Write("Selected option: "); int key = Convert.ToInt32(Console.ReadLine()); Action action = items[key - 1].Action; action(); }