alielie
2026-04-23 ef52fd6fd07508883dce4eb002acda59f0169e59
HMI.Core/Manager/ParameterManager.cs
@@ -39,6 +39,26 @@
            return datas.FirstOrDefault(d => d.Name == name);
        }
        public static T GetCommonParameterByName<T>(string name, T defaultValue)
        {
            try
            {
                string path = PathHelper.ParameterDataPath;
                if (!File.Exists(path)) return defaultValue;
                List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
                var data = datas.FirstOrDefault(d => d.Name == name);
                if (data == null)
                {
                    return defaultValue;
                }
                return (T)Convert.ChangeType(data.Value, typeof(T));
            }
            catch
            {
                return defaultValue;
            }
        }
        /// <summary>
        /// 保存通用参数
        /// </summary>
@@ -62,5 +82,55 @@
            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<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(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;
            }
        }
    }
}