IwbRtVariable.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System;
  2. using IwbZero.IwbDataQuery;
  3. using IwbZero.ToolCommon.StringModel;
  4. namespace IwbZero.IwbBase
  5. {
  6. public class IwbRtVariable
  7. {
  8. private object _varValue;
  9. public IwbRtVariable(string pcVarName, string pcVarType= "NCHAR")
  10. {
  11. VarName = pcVarName.UAndT();
  12. DataType = new IwbDataType(pcVarType);
  13. }
  14. public string VarName { get; }
  15. public object VarValue
  16. {
  17. get
  18. {
  19. if (_varValue == null)
  20. {
  21. if (DataType.IsDateTime)
  22. {
  23. _varValue = "".StrToDt();
  24. }
  25. else if (DataType.IsNumeric)
  26. {
  27. _varValue = 0;
  28. }
  29. else
  30. {
  31. _varValue = "";
  32. }
  33. }
  34. return _varValue;
  35. }
  36. set
  37. {
  38. if (DataType.IsDateTime)
  39. {
  40. if (value == null)
  41. {
  42. _varValue = "".StrToDt();
  43. }
  44. else if (value is DateTime)
  45. {
  46. _varValue = value;
  47. }
  48. else
  49. {
  50. _varValue = value.ToString().StrToDt();
  51. }
  52. }
  53. else if (DataType.IsNumeric)
  54. {
  55. if (value == null)
  56. {
  57. _varValue = 0;
  58. }
  59. else
  60. {
  61. _varValue = value.ToString().ValD();
  62. }
  63. }
  64. else if (value == null)
  65. {
  66. _varValue = "";
  67. }
  68. else
  69. {
  70. _varValue = value;
  71. }
  72. }
  73. }
  74. [Newtonsoft.Json.JsonIgnore]
  75. public IwbDataType DataType { get; }
  76. public IwbRtVariable SetValue(object value)
  77. {
  78. VarValue = value;
  79. return this;
  80. }
  81. public string GetStringValue()
  82. {
  83. string str = "";
  84. if (_varValue != null)
  85. {
  86. str = _varValue.ToString();
  87. }
  88. if (DataType.IsDateTime && (_varValue is DateTime dateTime))
  89. {
  90. str = dateTime.DtToStr();
  91. }
  92. return str;
  93. }
  94. public static IwbRtVariable Str2Variable(string str)
  95. {
  96. var arr = str.StrToArray(":");
  97. string id = "", type = "NCHAR", value = "";
  98. if (arr.Length > 0)
  99. {
  100. id = arr[0].UAndT();
  101. }
  102. if (arr.Length > 1)
  103. {
  104. type = arr[1];
  105. }
  106. if (arr.Length > 2)
  107. {
  108. value = arr[2];
  109. }
  110. var variable = new IwbRtVariable(id, type).SetValue(value);
  111. return variable;
  112. }
  113. public static string Variable2Str(IwbRtVariable v)
  114. {
  115. return $"[{v.VarName}:{v.DataType.TypeString}:{v.GetStringValue()}]";
  116. }
  117. }
  118. }