protected override ISettings LoadSettingCore(Type settingType, int storeId = 0)
        {
            var appSettings = ConfigurationManager.AppSettings;
            var result      = Activator.CreateInstance(settingType);

            var properties = FastProperty.GetCandidateProperties(settingType)
                             .Select(pi => FastProperty.GetProperty(pi, PropertyCachingStrategy.Uncached))
                             .Where(pi => pi.IsPublicSettable);

            foreach (var prop in properties)
            {
                var key = string.Concat(settingType.Name, ".", prop.Name);
                if (appSettings.AllKeys.Contains(key))
                {
                    var val          = appSettings.Get(key);
                    var convertedVal = val.Convert(prop.Property.PropertyType, CultureInfo.CurrentCulture);
                    prop.SetValue(result, convertedVal);
                }
            }

            return(result as ISettings);
        }