/// <summary> /// Устанавливает значение дочернего элемента. /// </summary> /// <typeparam name="T">Тип значения.</typeparam> /// <param name="name">Название дочернего элемента.</param> /// <param name="values">Значения элементов.</param> public void SetProperties <T>(string name, T[] values) where T : struct { var xname = XName.Get(name); foreach (var value in values) { if (null != PropertyChanging && !_suppressEvents) { _suppressEvents = true; PropertyChanging(this, name, value); _suppressEvents = false; } var xvalue = new XElement(xname) { Value = FormattedValue <T> .ToFormat(value) }; Add(xvalue); if (null != PropertyChanged && !_suppressEvents) { _suppressEvents = true; PropertyChanged(this, name); _suppressEvents = false; } } }
/// <summary> /// Получает значения дочерних элементов. /// </summary> /// <typeparam name="T">Тип значения.</typeparam> /// <param name="name">Название дочернего элемента.</param> /// <returns>Значения элементов.</returns> public T[] GetProperties <T>(string name) where T : struct { var xname = XName.Get(name); var e = Elements(xname); var properties = e.Select(element => FormattedValue <T> .ToValue(element.Value)).ToList(); return(properties.ToArray()); }
/// <summary> /// Получает значение атрибута. /// </summary> /// <typeparam name="T">Тип значения.</typeparam> /// <param name="name">Название атрибута.</param> /// <param name="default">Значение по умолчанию.</param> /// <returns>Значение атрибута.</returns> public T GetAttribute <T>(string name, T @default = default(T)) where T : struct { var xname = XName.Get(name); var e = Attribute(xname); if (null == e) { return(@default); } return(FormattedValue <T> .ToValue(e.Value)); }
/// <summary> /// Получает значение дочернего элемента. /// </summary> /// <typeparam name="T">Тип значения.</typeparam> /// <param name="name">Название дочернего элемента.</param> /// <returns>Значение элемента.</returns> public T GetProperty <T>(string name) where T : struct { var xname = XName.Get(name); var e = Element(xname); if (null == e) { return(default(T)); } return(FormattedValue <T> .ToValue(e.Value)); }
/// <summary> /// Устанавливает значение дочернего элемента. /// </summary> /// <param name="name">Название дочернего элемента.</param> /// <param name="value">Значение элемента.</param> public void SetProperty(string name, DateTime value) { var xname = XName.Get(name); if (null != PropertyChanging && !_suppressEvents) { _suppressEvents = true; PropertyChanging(this, name, value); _suppressEvents = false; } SetElementValue(xname, FormattedValue <DateTime> .ToFormat(value)); if (null != PropertyChanged && !_suppressEvents) { _suppressEvents = true; PropertyChanged(this, name); _suppressEvents = false; } }
/// <summary> /// Устанавливает значение дочернего элемента. /// </summary> /// <typeparam name="T">Тип значения.</typeparam> /// <param name="name">Название дочернего элемента.</param> /// <param name="value">Значение элемента.</param> public void SetProperty <T>(string name, T value) where T : struct { var xname = XName.Get(name); if (null != PropertyChanging && !_suppressEvents) { _suppressEvents = true; PropertyChanging(this, name, value); _suppressEvents = false; } SetElementValue(xname, FormattedValue <T> .ToFormat(value)); if (null != PropertyChanged && !_suppressEvents) { _suppressEvents = true; PropertyChanged(this, name); _suppressEvents = false; } }
/// <summary> /// Получает обязательные данные конфигурации приложения. /// </summary> /// <param name="key">Название настройки</param> /// <returns>Значение настройки</returns> public static T RequiredSetting <T>(string key) where T : struct { var v = GetSettingValue(key); if (string.IsNullOrEmpty(v)) { throw new ConfigurationErrorsException($"Required setting '{key}' not specified. Check <appSettings> section."); } try { T value = FormattedValue <T> .ToValue(v); return(value); } catch (Exception) // thrown { throw new ConfigurationErrorsException($"Required setting '{key}' set incorrectly. Check <appSettings> section."); } }
/// <summary> /// Получает данные конфигурации приложения. /// </summary> /// <param name="key">Название настройки</param> /// <param name="def">Значение по умолчанию</param> /// <returns>Значение настройки</returns> public static T Setting <T>(string key, T def = default(T)) where T : struct { var cv = GetSettingValue(key) ?? string.Empty; return(FormattedValue <T> .ToValue(cv, def)); }