事前定義された条件(OperatorType
および比較値)に基づいて、それが真か偽かを検証するビジネスロジックがあります。ここでの問題は、値が「型指定」されており、演算子 (より大きい/小さい/等しいなど) があることです。
が Integer の場合ValueType
、値と比較値をInteger
まず に変換し、次に に基づいて比較する必要がありOperatorType
ます。
、、を渡しCompareValue
、true/false を返す一般的な関数を使用できるかどうかを知りたいです。Value
ValueType
OperatorType
using System;
using System.Collections.Generic;
namespace Test
{
class Program
{
static void Main(string[] args)
{
var compare1 = 3;
var foo1 = new Foo { Value = "2", OperatorType = OperatorTypes.GreaterOrEqual, ValueType = ValueTypes.Long };
//compare compare1 and foo1.Value, output should be false (2 < 3)
var compare2 = true;
var foo2 = new Foo { Value = "True", OperatorType = OperatorTypes.Equal, ValueType = ValueTypes.Bool };
//compare compare2 and foo2.Value, output should be true (true = true)
var compare3 = DateTime.Parse("2013-03-19 15:00");
var foo3 = new Foo { Value = "2013-03-19 16:00", OperatorType = OperatorTypes.Less, ValueType = ValueTypes.Date };
//compare compare3 and foo3.Value, output should be false (2013-03-19 16:00 < 2013-03-19 15:00)
}
}
public enum OperatorTypes : uint
{
Equal = 1,
Greater = 2,
GreaterOrEqual = 3,
Less = 4,
LessOrEqual = 5
}
public enum ValueTypes : uint
{
None = 0,
Integer = 1,
Long = 2,
Numeric = 3,
Date = 4,
Text = 5,
Bool = 6
}
class Foo
{
public string Value { get; set; }
public ValueTypes ValueType { get; set; }
public OperatorTypes OperatorType { get; set; }
}
}