using System; using IwbZero.IwbDataQuery; using IwbZero.ToolCommon.StringModel; namespace IwbZero.IwbBase { public class IwbRtVariable { private object _varValue; public IwbRtVariable(string pcVarName, string pcVarType= "NCHAR") { VarName = pcVarName.UAndT(); DataType = new IwbDataType(pcVarType); } public string VarName { get; } public object VarValue { get { if (_varValue == null) { if (DataType.IsDateTime) { _varValue = "".StrToDt(); } else if (DataType.IsNumeric) { _varValue = 0; } else { _varValue = ""; } } return _varValue; } set { if (DataType.IsDateTime) { if (value == null) { _varValue = "".StrToDt(); } else if (value is DateTime) { _varValue = value; } else { _varValue = value.ToString().StrToDt(); } } else if (DataType.IsNumeric) { if (value == null) { _varValue = 0; } else { _varValue = value.ToString().ValD(); } } else if (value == null) { _varValue = ""; } else { _varValue = value; } } } [Newtonsoft.Json.JsonIgnore] public IwbDataType DataType { get; } public IwbRtVariable SetValue(object value) { VarValue = value; return this; } public string GetStringValue() { string str = ""; if (_varValue != null) { str = _varValue.ToString(); } if (DataType.IsDateTime && (_varValue is DateTime dateTime)) { str = dateTime.DtToStr(); } return str; } public static IwbRtVariable Str2Variable(string str) { var arr = str.StrToArray(":"); string id = "", type = "NCHAR", value = ""; if (arr.Length > 0) { id = arr[0].UAndT(); } if (arr.Length > 1) { type = arr[1]; } if (arr.Length > 2) { value = arr[2]; } var variable = new IwbRtVariable(id, type).SetValue(value); return variable; } public static string Variable2Str(IwbRtVariable v) { return $"[{v.VarName}:{v.DataType.TypeString}:{v.GetStringValue()}]"; } } }