/// <summary> /// Converts a comma separated list of times /// </summary> /// <param name="day"></param> /// <returns></returns> protected virtual IEnumerable <TimeSpan> ParseDay(string day) { Guard.AgainstEmpty(day); var pi = myConfig.GetType().GetProperty(day); Guard.AgainstNull(pi, string.Format("Day '{0}' does not match a configuration property", day)); var dayAlarms = pi.GetValue(myConfig, null); if (dayAlarms == null) { return(new TimeSpan[0]); } if (string.IsNullOrEmpty(dayAlarms.ToString())) { return(new TimeSpan[0]); } var alarms = new List <TimeSpan>(); var parts = dayAlarms.ToString().Split(','); foreach (var part in parts) { TimeSpan alarm; if (!TimeSpan.TryParse(part, out alarm)) { throw new FormatException(string.Format("{0} part '{1}' is invalid", day, part)); } if (!alarms.Contains(alarm)) { alarms.Add(alarm); } } return(alarms); }