public string RegisterHarvester(List <string> arguments) { Type type = Assembly.GetExecutingAssembly().GetTypes().First(x => x.Name == arguments[0] + "Harvester"); Harvester harvester; try { if (type.Name == "SonicHarvester") { harvester = harvestFactory.CreateInstance(arguments) as Harvester; } else { harvester = harvestFactory.CreateInstance(arguments) as Harvester; } } catch (Exception e) { string propName = e.InnerException.TargetSite.Name.Substring(4); return($"Harvester is not registered, because of it's {propName}"); } harvesters[arguments[1]] = harvester; return($"Successfully registered {arguments[0]} Harvester - {arguments[1]}"); }