public void AddOrUpdateValue <T>(string key, T value, SettingStrategy strategy = SettingStrategy.Local, string containerName = "") { _loggingService.WriteLine($"Adding setting {key} to {strategy.ToString().ToLower()} container {containerName} with value '{value}'."); var type = typeof(T); if (value != null) { type = value.GetType(); } var container = new ApplicationDataCompositeValue(); var converted = JsonConvert.SerializeObject(value, Formatting.None); if (converted != null) { container["Value"] = converted; } if ((type != typeof(string) && !type.GetTypeInfo().IsValueType) || (type != typeof(T))) { container["Type"] = type.AssemblyQualifiedName; } GetContainerValuesForStrategyAndContainerName(strategy, containerName)[key] = container; }
/// <summary> /// Retrieves application settings of types bool, float, int, long, ICollection<string> and string /// </summary> /// <param name="key">Setting Key</param> /// <param name="settingStrategy">Setting Strategy</param> /// <returns>Application Settings of types bool, float, int, long, ICollection<string> or string</returns> public T GetSetting <T>(string key, SettingStrategy settingStrategy) { switch (settingStrategy) { case SettingStrategy.Local: if (typeof(T) == typeof(bool)) { return((T)(object)_localSettings.Values[key]); } else if (typeof(T) == typeof(float)) { return((T)(object)_localSettings.Values[key]); } else if (typeof(T) == typeof(int)) { return((T)(object)_localSettings.Values[key]); } else if (typeof(T) == typeof(long)) { return((T)(object)_localSettings.Values[key]); } else if (typeof(T) == typeof(ICollection <string>)) { return((T)(object)_localSettings.Values[key]); } else { return((T)(object)_localSettings.Values[key]); } case SettingStrategy.Roaming: if (typeof(T) == typeof(bool)) { return((T)(object)_roamingSettings.Values[key]); } else if (typeof(T) == typeof(float)) { return((T)(object)_roamingSettings.Values[key]); } else if (typeof(T) == typeof(int)) { return((T)(object)_roamingSettings.Values[key]); } else if (typeof(T) == typeof(long)) { return((T)(object)_roamingSettings.Values[key]); } else if (typeof(T) == typeof(ICollection <string>)) { return((T)(object)_roamingSettings.Values[key]); } else { return((T)(object)_roamingSettings.Values[key]); } default: return(default); } }
/// <summary> /// Removes application settings /// </summary> /// <param name="key">Settings Key</param> /// <param name="settingStrategy">Setting Strategy</param> public void RemoveSetting(string key, SettingStrategy settingStrategy) { switch (settingStrategy) { case SettingStrategy.Local: _localSettings.Values.Remove(key); break; case SettingStrategy.Roaming: _roamingSettings.Values.Remove(key); break; default: break; } }
/// <summary> /// Saves application settings of types bool, float, int, long, ICollection<string> and string /// </summary> /// <param name="key">Settings Key</param> /// <param name="value">Settings Value</param> /// <param name="settingStrategy">Setting Strategy</param> public void SaveSetting(string key, object value, SettingStrategy settingStrategy) { switch (settingStrategy) { case SettingStrategy.Local: _localSettings.Values[key] = value; break; case SettingStrategy.Roaming: _roamingSettings.Values[key] = value; break; default: break; } }
private IPropertySet GetContainerValuesForStrategyAndContainerName(SettingStrategy strategy, string containerName) { var container = ApplicationData.Current.LocalSettings; if (strategy == SettingStrategy.Roaming) { container = ApplicationData.Current.RoamingSettings; } if (!string.IsNullOrWhiteSpace(containerName)) { container = container.CreateContainer(containerName, ApplicationDataCreateDisposition.Always); } return(container.Values); }
public T GetValueOrDefault <T>(string key, T defaultValue = default(T), SettingStrategy strategy = SettingStrategy.Local, string containerName = "") { _loggingService.WriteLine($"Trying to fetch setting {key} from {strategy.ToString().ToLower()} container {containerName}."); try { var values = GetContainerValuesForStrategyAndContainerName(strategy, containerName); if (values.ContainsKey(key)) { var container = values[key] as ApplicationDataCompositeValue; var type = typeof(T); if (container.ContainsKey("Type")) { type = Type.GetType((string)container["Type"]); } string value = null; if (container.ContainsKey("Value")) { value = container["Value"] as string; } var converted = (T)JsonConvert.DeserializeObject(value, type); _loggingService.WriteLine($"Returning value: {converted}"); return(converted); } _loggingService.WriteLine($"Returning default value: {defaultValue}"); return(defaultValue); } catch { _loggingService.WriteLine($"Returning default value: {defaultValue}"); return(defaultValue); } }
public bool Contains(string key, SettingStrategy strategy = SettingStrategy.Local, string containerName = "") => GetContainerValuesForStrategyAndContainerName(strategy, containerName).ContainsKey(key);
public void Clear(SettingStrategy strategy = SettingStrategy.Roaming, string containerName = "") => GetContainerValuesForStrategyAndContainerName(strategy, containerName).Clear();
public void Remove(string key, SettingStrategy strategy = SettingStrategy.Roaming, string containerName = "") => GetContainerValuesForStrategyAndContainerName(strategy, containerName).Remove(key);
public IDictionary <string, object> GetContainer(string containerName, SettingStrategy strategy = SettingStrategy.Local) => GetContainerValuesForStrategyAndContainerName(strategy, containerName);
public IDictionary <string, object> GetReadingProgressContainer(SettingStrategy strategy) => Settings.SettingsService.GetContainer($"ReadingProgressContainer-{Settings.Authentication.ClientId}", strategy);