説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

ValueExpression.cs 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. namespace Unity.VisualScripting.Dependencies.NCalc
  3. {
  4. public class ValueExpression : LogicalExpression
  5. {
  6. public ValueExpression(object value, ValueType type)
  7. {
  8. Value = value;
  9. Type = type;
  10. }
  11. public ValueExpression(object value)
  12. {
  13. switch (System.Type.GetTypeCode(value.GetType()))
  14. {
  15. case TypeCode.Boolean:
  16. Type = ValueType.Boolean;
  17. break;
  18. case TypeCode.DateTime:
  19. Type = ValueType.DateTime;
  20. break;
  21. case TypeCode.Decimal:
  22. case TypeCode.Double:
  23. case TypeCode.Single:
  24. Type = ValueType.Float;
  25. break;
  26. case TypeCode.Byte:
  27. case TypeCode.SByte:
  28. case TypeCode.Int16:
  29. case TypeCode.Int32:
  30. case TypeCode.Int64:
  31. case TypeCode.UInt16:
  32. case TypeCode.UInt32:
  33. case TypeCode.UInt64:
  34. Type = ValueType.Integer;
  35. break;
  36. case TypeCode.String:
  37. Type = ValueType.String;
  38. break;
  39. default:
  40. throw new EvaluationException("This value could not be handled: " + value);
  41. }
  42. Value = value;
  43. }
  44. public ValueExpression(string value)
  45. {
  46. Value = value;
  47. Type = ValueType.String;
  48. }
  49. public ValueExpression(int value)
  50. {
  51. Value = value;
  52. Type = ValueType.Integer;
  53. }
  54. public ValueExpression(float value)
  55. {
  56. Value = value;
  57. Type = ValueType.Float;
  58. }
  59. public ValueExpression(DateTime value)
  60. {
  61. Value = value;
  62. Type = ValueType.DateTime;
  63. }
  64. public ValueExpression(bool value)
  65. {
  66. Value = value;
  67. Type = ValueType.Boolean;
  68. }
  69. public object Value { get; set; }
  70. public ValueType Type { get; set; }
  71. public override void Accept(LogicalExpressionVisitor visitor)
  72. {
  73. visitor.Visit(this);
  74. }
  75. }
  76. public enum ValueType
  77. {
  78. Integer,
  79. String,
  80. DateTime,
  81. Float,
  82. Boolean
  83. }
  84. }