private SettingsTypeContainer CreateNewContainer <T>()
        {
            var type          = typeof(T);
            var properties    = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
            var propertiesMap = new Dictionary <PropertyInfo, SettingPropertyAttribute>();

            foreach (var propertyInfo in properties)
            {
                var attribute = propertyInfo.GetCustomAttribute <SettingPropertyAttribute>();

                if (attribute != null)
                {
                    propertiesMap.Add(propertyInfo, attribute);
                }
            }

            var container = new SettingsTypeContainer(type, propertiesMap);

            SettinsCache.Add(type, container);
            return(container);
        }
        public string[] GetKeys <T>(bool useLowerCase = false)
        {
            SettingsTypeContainer container = GetOrCreateContainer <T>();

            return(container.GetKeys(useLowerCase));
        }