using System; using System.Collections.Generic; using AibisDream.Utility; using Newtonsoft.Json.Linq; namespace AibisDream.Kit { /// /// 配置项容器 /// 1. 读取时可以直接从文件读取 /// 2. 保存时可以直接保存到文件 /// 3. 修改时会触发回调函数 /// public class ConfigContainer { private readonly string _configPath; private JObject Data => JsonUtil.ReadJObject(_configPath); public event Action OnWrite; public ConfigContainer(string configPath) { _configPath = configPath; } /// /// 写入 /// /// 键 /// 值 public void Write(string key, string value) { var data = Data; data[key] = value; JsonUtil.SaveJObject(data, _configPath); OnWrite?.Invoke(key, value); } /// /// 读取配置项 /// /// 键 /// 值 /// 是否读取完成 public bool TryRead(string key, out string value) { var res = Data.TryGetValue(key, out var jsValue); value = jsValue?.ToString(); return res; } /// /// 读取全部配置项为Dict /// /// 配置项字典 public Dictionary ReadAll() { var data = Data; var res = new Dictionary(); foreach (var pair in data) { res[pair.Key] = pair.Value.ToString(); } return res; } } }