//add new item //lazy implementation static void AddItem() { try { Console.WriteLine("Item Types: cburger | vburger | colddrink | hotdrink"); Console.Write("Item Type:"); String type = Console.ReadLine(); MenuItem item; switch (type) { case "cburger": item = new ChickenBurger(); break; case "vburger": item = new VegBurger(); break; case "colddrink": item = new ColdDrink(); break; case "hotdrink": item = new HotDrink(); break; default: Console.WriteLine("Wrong type of item!"); return; } foreach (var prop in item.GetType().GetProperties()) { if (prop.Name.Equals("Id")) { continue; } Console.Write("{0}=", prop.Name); prop.SetValue(item, ParseAnyObject(Console.ReadLine())); } restaurant.AddItem(item); } catch (Exception e) { Console.WriteLine("Wrong input!"); Console.WriteLine(e.ToString()); } }