67 lines
1.8 KiB
C#
67 lines
1.8 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace ECCS
|
|
{
|
|
public sealed class MultidimensionalTableConfig
|
|
{
|
|
private static readonly object _lock = new();
|
|
private static MultidimensionalTableConfig? _instance;
|
|
|
|
/// <summary>
|
|
/// 单例实例(首次访问自动从文件加载)
|
|
/// </summary>
|
|
public static MultidimensionalTableConfig Instance
|
|
{
|
|
get
|
|
{
|
|
lock (_lock)
|
|
{
|
|
if (_instance == null)
|
|
{
|
|
_instance = Load();
|
|
}
|
|
return _instance;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// exe 目录下的 config.json
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
private static string ConfigFilePath =>
|
|
Path.Combine(AppContext.BaseDirectory, "config.json");
|
|
|
|
// ===== 配置项 =====
|
|
public string AppToken { get; set; }
|
|
public string DefaultTableId { get; set; }
|
|
public bool DefaultTableIsDeleted { get; set; }
|
|
|
|
/// <summary>
|
|
/// 保存到 config.json
|
|
/// </summary>
|
|
public void Save()
|
|
{
|
|
var json = JsonConvert.SerializeObject(this, Formatting.Indented);
|
|
File.WriteAllText(ConfigFilePath, json);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 从 config.json 加载
|
|
/// </summary>
|
|
private static MultidimensionalTableConfig Load()
|
|
{
|
|
if (!File.Exists(ConfigFilePath))
|
|
{
|
|
return new MultidimensionalTableConfig();
|
|
}
|
|
|
|
var json = File.ReadAllText(ConfigFilePath);
|
|
return JsonConvert.DeserializeObject<MultidimensionalTableConfig>(json)
|
|
?? new MultidimensionalTableConfig();
|
|
}
|
|
}
|
|
}
|