public void ProcessResults(List <IResource> resProcessed) { Dictionary <string, double> compostProduced = new Dictionary <string, double>(); resProcessed.ForEach(composter => { ICompostProducing resource = (ICompostProducing)composter; try { compostProduced.Add(resource.GetType().Name, resource.CollectCompost()); } catch (Exception) { compostProduced[resource.GetType().Name] += resource.CollectCompost(); } }); foreach (KeyValuePair <string, double> composter in compostProduced) { System.Console.WriteLine($"{composter.Value}kg of {composter.Key} compost was collected"); } }