using HMI.Core.Entity;
|
using HMI.Core.Util;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
|
namespace HMI.Core.Manager
|
{
|
/// <summary>
|
/// TODO 优化数据源,需要支持sqlite和xml
|
/// </summary>
|
public class ParameterManager
|
{
|
|
/// <summary>
|
/// 获取通用参数
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <returns></returns>
|
public static T GetCommonParameter<T>() where T : IList<ParameterData>
|
{
|
string path = PathHelper.ParameterDataPath;
|
if (!File.Exists(path)) return default(T);
|
T datas = XmlHelper.DeserializeFromXml<T>(path);
|
return datas;
|
}
|
|
/// <summary>
|
/// 获取通用参数
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <returns></returns>
|
public static ParameterData GetCommonParameterByName(string name)
|
{
|
string path = PathHelper.ParameterDataPath;
|
if (!File.Exists(path)) return null;
|
List<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(path);
|
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>
|
/// <param name="datas"></param>
|
/// <exception cref="Exception"></exception>
|
public static void SaveCommonParameter(IList<ParameterData> 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<ParameterData> datas = XmlHelper.DeserializeFromXml<List<ParameterData>>(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<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;
|
}
|
}
|
}
|
}
|