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