✨ feat: 初始化 PCB 检测 WPF 应用程序
* 创建 AxiOmron.PcbCheck 项目主框架及解决方案 * 添加 Dashboard 和系统设置页面 * 实现 Modbus TCP PLC、扫码枪、SFTP 查询等核心服务 * 集成 Andon 报警、工作流托管服务与日志配置 * 补充项目文档和 UI 设计规范
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user