/// <summary> /// Attempts to parse a value to the date/time, using the specified settings. /// </summary> /// <param name="value">String value to be parsed.</param> /// <param name="option"></param> /// <returns>True if the string can be parsed to this value type, false otherwise.</returns> private static bool TryParse(string value, DateTimeOption option, CultureInfo culture) { if (value == null) return false; if (value.Length == 0) return false; List<string> options = new List<string>(); if (option == DateTimeOption.Date || option == DateTimeOption.DateTime) { options.Add("d"); options.Add("D"); } if (option == DateTimeOption.Time || option == DateTimeOption.DateTime) { options.Add("t"); options.Add("T"); } if (option == DateTimeOption.MonthDay || option == DateTimeOption.DateTime) options.Add("m"); if (option == DateTimeOption.YearMonth || option == DateTimeOption.DateTime) options.Add("Y"); if (option == DateTimeOption.DateTime) { options.Add("f"); options.Add("F"); options.Add("g"); options.Add("G"); options.Add("o"); options.Add("R"); options.Add("s"); options.Add("u"); options.Add("U"); } DateTimeStyles styles = DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.RoundtripKind; DateTime returnValue; foreach (string item in options) { if (DateTime.TryParseExact(value, item, culture, styles, out returnValue)) return true; } return false; }
/// <summary> /// Loads the configuration properties from XML node. /// </summary> /// <param name="parent">Parent XML node containing the child settings elements.</param> public override void Load(XmlNode parent) { foreach (XmlNode node in parent.ChildNodes) { if (node.NodeType == XmlNodeType.Element && string.Compare(node.Name, "setting", true) == 0) { XmlAttribute nameAttrib = node.Attributes["name"]; XmlAttribute valueAttrib = node.Attributes["value"]; if (nameAttrib != null && valueAttrib != null) { // Set DateTimeSelect if found. if (nameAttrib.Value == "DateTimeSelect") { DateTimeOption value; if (Enum.TryParse<DateTimeOption>(valueAttrib.Value, out value)) DateTimeSelect = value; } // Set Culture if found. if (nameAttrib.Value == "Culture") { try { Culture = CultureInfo.GetCultureInfo(valueAttrib.Value); } catch (Exception) { } } } } } }