public bool Evaluate() { Object source; if (TestObject.Find(Source) != null) { source = TestObject.Find(Source); } else if (KodiObject.Find(Source) != null) { source = KodiObject.Find(Source); } else if (WeatherObject.Find(Source) != null) { source = WeatherObject.Find(Source); } else if (GenericInfoObject.Find(Source) != null) { source = GenericInfoObject.Find(Source); } else { Console.WriteLine("Source not found"); return(false); } string attribute = source.GetType().GetMethod("AGet" + Attribute).Invoke(source, null).ToString(); Comparators comparator = (Comparators)Enum.Parse(typeof(Comparators), Comparator.ToUpper()); if (comparator.Equals(Comparators.EQUALS)) { return(attribute.Equals(Threshold)); } else if (comparator.Equals(Comparators.MORE)) { try { return(Double.Parse(attribute) > Double.Parse(Threshold)); } catch (Exception) { Console.WriteLine("Cannot cast inputs"); return(false); } } else if (comparator.Equals(Comparators.LESS)) { try { return(Double.Parse(attribute) < Double.Parse(Threshold)); } catch (Exception) { Console.WriteLine("Cannot cast inputs"); return(false); } } else { return(false); } }