public static void SetData <T>(this BaseDiscordCommand command, string name, T data) { if (!Directory.Exists(configDataPath)) { Directory.CreateDirectory(configDataPath); } Dictionary <string, object> dataStore = new Dictionary <string, object>(); string assemblyName = command.GetType().Assembly.GetName().Name; string filePath = Path.Combine(configDataPath, $"{assemblyName}.json"); if (dataCache.TryGetValue(assemblyName, out dataStore)) { dataStore[name] = data; dataCache[assemblyName] = dataStore; } else { if (File.Exists(filePath)) { dataStore = JsonConvert.DeserializeObject <Dictionary <string, object> >(File.ReadAllText(filePath)); dataStore[name] = data; dataCache[assemblyName] = dataStore; } else { File.WriteAllText(filePath, JsonConvert.SerializeObject(dataStore, Formatting.Indented)); dataStore[name] = data; dataCache[assemblyName] = dataStore; } } }
public static T GetData <T>(this BaseDiscordCommand command, string name) { if (!Directory.Exists(configDataPath)) { Directory.CreateDirectory(configDataPath); } Dictionary <string, object> data = new Dictionary <string, object>(); string assemblyName = command.GetType().Assembly.GetName().Name; string filePath = Path.Combine(configDataPath, $"{assemblyName}.json"); if (dataCache.TryGetValue(assemblyName, out data)) { return(GetFromDictionary <T>(name, data)); } else { if (File.Exists(filePath)) { data = JsonConvert.DeserializeObject <Dictionary <string, object> >(File.ReadAllText(filePath)); dataCache[assemblyName] = data; return(GetFromDictionary <T>(name, data)); } else { data = new Dictionary <string, object>(); File.WriteAllText(filePath, JsonConvert.SerializeObject(data)); return(GetFromDictionary <T>(name, data)); } } }