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; }
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); } }