You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.6 KiB
C#

using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* LAPTOP-E0N2L34V
* SlnMesnac.Config
* 496f8d2b-70e3-4a05-ae18-a9b0fcd06b82
*
* WenJY
* wenjy@mesnac.com
* 2024-03-27 21:58:35
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.Config
{
/// <summary>
/// 系统配置
/// </summary>
#pragma warning disable CS8618 // Non-nullable field 'Data' must contain a non-null value when exiting constructor. Consider declaring the field as nullable.
public class AppConfig : IOptions<AppConfig>
{
/// <summary>
/// 日志文件路径
/// </summary>
public string logPath { get; set; }
/// <summary>
/// Sql连接配置
/// </summary>
public List<SqlConfig> sqlConfig { get; set; }
/// <summary>
/// PLC连接配置
/// </summary>
public List<PlcConfig> plcConfig { get; set; }
/// <summary>
/// RFID连接配置
/// </summary>
public List<RfidConfig> rfidConfig { get; set; }
/// <summary>
/// Redis配置
/// </summary>
public string redisConfig { get; set; }
/// <summary>
/// 修改配置文件
/// </summary>
/// <param name="appConfig"></param>
public void SetValue(AppConfig appConfig)
{
var jsonObject = JsonConvert.SerializeObject(new
{
AppConfig = new
{
logPath = appConfig.logPath,
SqlConfig = appConfig.sqlConfig,
PlcConfig = appConfig.plcConfig,
RfidConfig = appConfig.rfidConfig,
RedisConfig = appConfig.redisConfig,
}
}, Newtonsoft.Json.Formatting.Indented);
var appSettingsPath = Path.Combine(AppContext.BaseDirectory, "appsettings.json");
File.WriteAllText(appSettingsPath, jsonObject);
}
public AppConfig Value => this;
}
}