Пример #1
0
        private TSettings ReloadSettings()
        {
            var settings = Activator.CreateInstance <TSettings>();

            var properties = from pi in typeof(TSettings).GetProperties()
                             where pi.CanWrite && pi.CanRead
                             let key = string.Concat(typeof(TSettings).Name, ".", pi.Name)
                                       let setting = _settingService.GetValue <string>(key, null, false, true)
                                                     where setting != null
                                                     where UniversalTypeConverter.CanConvert(setting, pi.PropertyType)
                                                     let value = UniversalTypeConverter.Convert(setting, pi.PropertyType)
                                                                 select new {
                PropertyInfo = pi,
                Value        = value
            };

            properties.ToList().ForEach(p => p.PropertyInfo.SetValue(settings, p.Value, null));

            return(settings);
        }