using HMI.Core.Entity; using HMI.Core.Util; using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace HMI.Core.Manager { /// /// TODO 优化数据源,需要支持sqlite和xml /// public class ParameterManager { /// /// 获取通用参数 /// /// /// public static T GetCommonParameter() where T : IList { string path = PathHelper.ParameterDataPath; if (!File.Exists(path)) return default(T); T datas = XmlHelper.DeserializeFromXml(path); return datas; } /// /// 获取通用参数 /// /// /// public static ParameterData GetCommonParameterByName(string name) { string path = PathHelper.ParameterDataPath; if (!File.Exists(path)) return null; List datas = XmlHelper.DeserializeFromXml>(path); return datas.FirstOrDefault(d => d.Name == name); } /// /// 保存通用参数 /// /// /// public static void SaveCommonParameter(IList datas) { if (datas == null) { throw new Exception("不能为null"); } string path = PathHelper.ParameterDataPath; XmlHelper.SerializeToXml(path, datas); } public static string GetCommonParameterValue(string path, string name) { if (!File.Exists(path)) return null; List datas = XmlHelper.DeserializeFromXml>(path); ParameterData data = datas.FirstOrDefault(d => d.Name == name); if (data == null) return null; return data.Value; } public static bool UpdateCommonParameter(string name, object value, out string errMsg) { errMsg = string.Empty; try { string path = PathHelper.ParameterDataPath; if (!File.Exists(path)) { errMsg = "配置文件不存在"; return false; } List datas = XmlHelper.DeserializeFromXml>(path); ParameterData data = datas.FirstOrDefault(d => d.Name == name); if (data != null) { data.Value = value.ToString(); XmlHelper.SerializeToXml(path, datas); return true; } string type = "String"; if (value is bool) { type = "Bool"; } else if (value is int) { type = "Int"; } else if (value is double) { type = "Double"; } data = new ParameterData { Name = name, Type = type, Value = value.ToString() }; datas.Add(data); XmlHelper.SerializeToXml(path, datas); return true; } catch (Exception ex) { errMsg = ex.Message; return false; } } } }