コード例 #1
0
        /// <summary>
        /// Before storing the setting, it is first serialized to JSON
        /// </summary>
        /// <typeparam name="T">Type of the setting</typeparam>
        /// <param name="key">Key</param>
        /// <param name="value">Value</param>
        /// <param name="locality">Locality</param>
        public void SetLargeSetting <T>(string key, T value, SettingLocality locality = SettingLocality.Local) where T : new()
        {
            //serialize the setting
            var serializedValue = JsonConvert.SerializeObject(value);

            SetFileSettings(key, serializedValue, locality);
        }
コード例 #2
0
        public void SetSetting <T>(string key, T value, SettingLocality locality = SettingLocality.Local)
        {
            var container = locality == SettingLocality.Roamed ? ApplicationData.Current.RoamingSettings : ApplicationData.Current.LocalSettings;

            container.Values[key] = value;
            //ensure cache is updated
            _settingCache.Remove(key);
        }
コード例 #3
0
        /// <summary>
        /// Gets a application setting
        /// </summary>
        /// <typeparam name="T">Type of setting value</typeparam>
        /// <param name="key">Setting key</param>
        /// <param name="defaultValueBuilder">Default value builder</param>
        /// <param name="locality">Locality of the setting</param>
        /// <returns></returns>
        public override T GetSetting <T>(
            string key,
            Func <T> defaultValueBuilder,
            SettingLocality locality = SettingLocality.Local)
        {
            object result = null;

            if (!_settingCache.TryGetValue(key, out result))
            {
                var container = locality == SettingLocality.Roamed ?
                                ApplicationData.Current.RoamingSettings :
                                ApplicationData.Current.LocalSettings;
                _settingCache[key] = RetrieveSettingFromApplicationData(key, defaultValueBuilder, container);
            }
            return((T)_settingCache[key]);
        }
コード例 #4
0
        /// <summary>
        /// Stores a setting into a file.
        /// </summary>
        /// <param name="key">Setting key</param>
        /// <param name="value">Value to store</param>
        /// <param name="locality">Setting locality</param>
        protected override void SetFileSettings(
            string key,
            string value,
            SettingLocality locality = SettingLocality.Local)
        {
            var containerPath = locality == SettingLocality.Roamed ?
                                LargeSettingsRoamingFolderPath :
                                LargeSettingsLocalFolderPath;

            string settingsFile = $"{containerPath}\\{key}";

            System.IO.File.WriteAllText(settingsFile, value);

            //ensure cache is invalidated
            _settingCache.Remove(key);
        }
コード例 #5
0
        /// <summary>
        /// Gets a application setting from a file.
        /// </summary>
        /// <param name="key">Setting key</param>
        /// <param name="locality">Locality of the setting</param>
        /// <returns></returns>
        protected override string GetFileSettings(
            string key,
            SettingLocality locality = SettingLocality.Local)
        {
            object result = null;

            if (!_settingCache.TryGetValue(key, out result))
            {
                var container = locality == SettingLocality.Roamed ?
                                LargeSettingsRoamingFolderPath :
                                LargeSettingsLocalFolderPath;
                _settingCache[key] = RetrieveSettingFromApplicationFolder(key, container);
            }

            return((string)_settingCache[key]);
        }
コード例 #6
0
        /// <summary>
        /// After setting retrieval, the setting is deserialized from JSON
        /// </summary>
        /// <typeparam name="T">Type of the setting</typeparam>
        /// <param name="key">Key</param>
        /// <param name="defaultValueBuilder">Value</param>
        /// <param name="locality">Locality</param>
        /// <returns></returns>
        public T GetComplexSetting <T>(string key, Func <T> defaultValueBuilder, SettingLocality locality = SettingLocality.Local) where T : new()
        {
            var retrievedSetting = GetSetting <string>(key, () => null, locality);

            if (retrievedSetting != null)
            {
                try
                {
                    return(JsonConvert.DeserializeObject <T>(retrievedSetting));
                }
                catch
                {
                    //ignore, return default value instead
                }
            }
            return(defaultValueBuilder());
        }
コード例 #7
0
 protected abstract void SetFileSettings(string key, string value, SettingLocality locality = SettingLocality.Local);
コード例 #8
0
 protected abstract string GetFileSettings(string key, SettingLocality locality = SettingLocality.Local);
コード例 #9
0
 public abstract void SetSetting <T>(string key, T value, SettingLocality locality = SettingLocality.Local);
コード例 #10
0
 public abstract T GetSetting <T>(string key, Func <T> defaultValueBuilder, SettingLocality locality = SettingLocality.Local);
コード例 #11
0
 /// <summary>
 /// Before storing the setting, it is first serialized to JSON
 /// </summary>
 /// <typeparam name="T">Type of the setting</typeparam>
 /// <param name="key">Key</param>
 /// <param name="value">Value</param>
 /// <param name="locality">Locality</param>
 protected void SetComplexSetting <T>(string key, T value, SettingLocality locality = SettingLocality.Local)
     where T : new()
 => _service.SetComplexSetting(CreateGroupedSettingKey(key), value, locality);
コード例 #12
0
 /// <summary>
 /// After setting retrieval, the setting is deserialized from JSON
 /// </summary>
 /// <typeparam name="T">Type of the setting</typeparam>
 /// <param name="key">Key</param>
 /// <param name="defaultValueBuilder">Value</param>
 /// <param name="locality">Locality</param>
 /// <returns></returns>
 protected T GetComplexSetting <T>(string key, Func <T> defaultValueBuilder,
                                   SettingLocality locality = SettingLocality.Local) where T : new()
 => _service.GetComplexSetting(CreateGroupedSettingKey(key), defaultValueBuilder, locality);
コード例 #13
0
 /// <summary>
 /// Stores a setting by key
 /// </summary>
 /// <typeparam name="T">Type of the stored value</typeparam>
 /// <param name="key">Key of the setting</param>
 /// <param name="value">Value to store</param>
 /// <param name="locality">Locality of the setting</param>
 protected void SetSetting <T>(string key, T value, SettingLocality locality = SettingLocality.Local) =>
 _service.SetSetting(CreateGroupedSettingKey(key), value, locality);