Files
IOT/BaseFrame/MultidimensionalTableConfig.cs
2025-12-19 10:28:46 +08:00

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