* 创建 AxiOmron.PcbCheck 项目主框架及解决方案 * 添加 Dashboard 和系统设置页面 * 实现 Modbus TCP PLC、扫码枪、SFTP 查询等核心服务 * 集成 Andon 报警、工作流托管服务与日志配置 * 补充项目文档和 UI 设计规范
66 lines
1.8 KiB
C#
66 lines
1.8 KiB
C#
using System.IO;
|
|
using System.Text.Json;
|
|
using AxiOmron.PcbCheck.Options;
|
|
using AxiOmron.PcbCheck.Services.Interfaces;
|
|
|
|
namespace AxiOmron.PcbCheck.Services.Implementations;
|
|
|
|
/// <summary>
|
|
/// 提供应用配置文件的读取与保存能力。
|
|
/// </summary>
|
|
public sealed class AppConfigService : IAppConfigService
|
|
{
|
|
private static readonly JsonSerializerOptions JsonOptions = new()
|
|
{
|
|
PropertyNameCaseInsensitive = true,
|
|
WriteIndented = true
|
|
};
|
|
|
|
/// <summary>
|
|
/// 读取当前应用配置。
|
|
/// </summary>
|
|
/// <returns>根配置对象。</returns>
|
|
public AppConfig Load()
|
|
{
|
|
var configPath = GetConfigPath();
|
|
if (!File.Exists(configPath))
|
|
{
|
|
var defaultConfig = new AppConfig();
|
|
Save(defaultConfig);
|
|
return defaultConfig;
|
|
}
|
|
|
|
var json = File.ReadAllText(configPath);
|
|
var config = JsonSerializer.Deserialize<AppConfig>(json, JsonOptions);
|
|
return config ?? new AppConfig();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存当前应用配置。
|
|
/// </summary>
|
|
/// <param name="config">待保存的配置对象。</param>
|
|
public void Save(AppConfig config)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(config);
|
|
|
|
var configPath = GetConfigPath();
|
|
var directory = Path.GetDirectoryName(configPath);
|
|
if (!string.IsNullOrWhiteSpace(directory))
|
|
{
|
|
Directory.CreateDirectory(directory);
|
|
}
|
|
|
|
var json = JsonSerializer.Serialize(config, JsonOptions);
|
|
File.WriteAllText(configPath, json);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取主配置文件路径。
|
|
/// </summary>
|
|
/// <returns>配置文件绝对路径。</returns>
|
|
public string GetConfigPath()
|
|
{
|
|
return Path.Combine(AppContext.BaseDirectory, "appConfig.json");
|
|
}
|
|
}
|