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