using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Model.Monitor { /// /// 系数转换 /// public class RatioConvert : JsonModel, IRatioConvert { /// /// /// public RatioConvert() { } /// /// /// /// /// public RatioConvert(eRatioConvertType convertType, IRatioConvert convertParas) { this.ConvertType = convertType; this.ConvertParas = convertParas; } /// /// /// /// public RatioConvert(RatioConvert rhs) { this.ConvertType = rhs.ConvertType; this.ConvertParas = rhs.ConvertParas; } /// /// 转换类型 /// public eRatioConvertType ConvertType { get; set; } /// /// 转换参数 /// public IRatioConvert ConvertParas { get; set; } /// /// 转换 /// public double Convert(double value, out bool succeed) { return ConvertParas.Convert(value, out succeed); } /// /// 转换 /// public double Convert(double value) { return ConvertParas.Convert(value); } /// /// 获取表达式 /// public string GetExpression() { return ConvertParas.GetExpression(); } /// /// /// /// /// public new static RatioConvert ToModel(string json) { if (string.IsNullOrEmpty(json)) return default; try { var dict = JsonHelper.Json2Object>(json); return ToModel(dict); } catch { return default; } } /// /// /// /// /// public static RatioConvert ToModel(Dictionary dict) { if (dict == null || dict.Count < 1) return default; try { var convertType = (eRatioConvertType)System.Convert.ToInt32(dict["ConvertType"]); IRatioConvert convertParas = null; switch (convertType) { case eRatioConvertType.Unit: convertParas = JsonHelper.Json2Object(JsonHelper.Object2Json(dict["ConvertParas"])); break; case eRatioConvertType.Once: convertParas = JsonHelper.Json2Object(JsonHelper.Object2Json(dict["ConvertParas"])); break; case eRatioConvertType.Twice: convertParas = JsonHelper.Json2Object(JsonHelper.Object2Json(dict["ConvertParas"])); break; default: break; } return new RatioConvert(convertType, convertParas); } catch { return default; } } } }