示例#1
0
        /// <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;
                }
            }
        }
示例#2
0
        /// <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());
        }
示例#3
0
        /// <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));
        }
示例#4
0
        /// <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));
        }
示例#5
0
        /// <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;
            }
        }
示例#6
0
        /// <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;
            }
        }
示例#7
0
        /// <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.");
            }
        }
示例#8
0
        /// <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));
        }