/// <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); }
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); }
/// <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]); }
/// <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); }
/// <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]); }
/// <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()); }
protected abstract void SetFileSettings(string key, string value, SettingLocality locality = SettingLocality.Local);
protected abstract string GetFileSettings(string key, SettingLocality locality = SettingLocality.Local);
public abstract void SetSetting <T>(string key, T value, SettingLocality locality = SettingLocality.Local);
public abstract T GetSetting <T>(string key, Func <T> defaultValueBuilder, SettingLocality locality = SettingLocality.Local);
/// <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);
/// <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);
/// <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);