using System.Text.RegularExpressions;
public bool IsValid { get; set; }
public bool IsRequired { get; set; }
var baseRule = new BaseRule();
baseRule.OneWayComparisonForTwoValues(
baseRule.IsBetweenTwoValues,
baseRule.IsBetweenTwoValues,
public bool IsNull<T>(T value)
public bool IsNotNull<T>(T value)
public bool IsBetweenTwoValues(int currentValue, int value1, int value2)
var result = (value1 <= currentValue && currentValue <= value2);
public bool IsBetweenTwoValues(long currentValue, long value1, long value2)
var result = (value1 <= currentValue && currentValue <= value2);
public bool IsBetweenTwoValues(double currentValue, double value1, double value2)
var result = (value1 <= currentValue && currentValue <= value2);
public bool IsBetweenTwoValues(DateTime currentValue, DateTime value1, DateTime value2)
var result = (value1 <= currentValue && currentValue <= value2);
public bool IsGreaterThan(int currrentValue, int value)
var result = (currrentValue > value);
public bool IsGreaterThan(long currrentValue, long value)
var result = (currrentValue > value);
public bool IsGreaterThan(double currrentValue, double value)
var result = (currrentValue > value);
public bool IsGreaterThan(DateTime currrentValue, DateTime value)
var result = (currrentValue > value);
public bool IsGreaterThan<T>(T currrentValue, T value)
var t = currrentValue.GetType();
switch (Type.GetTypeCode(t))
currrentVal = Convert.ToBoolean(currrentValue);
val = Convert.ToBoolean(value);
result = currrentVal == true && val == false;
currrentVal = Convert.ToByte(currrentValue);
val = Convert.ToByte(value);
result = currrentVal > val;
currrentVal = Convert.ToChar(currrentValue);
val = Convert.ToChar(value);
result = currrentVal > val;
currrentVal = Convert.ToDateTime(currrentValue);
val = Convert.ToDateTime(value);
result = currrentVal > val;
currrentVal = Convert.ToDecimal(currrentValue);
val = Convert.ToDecimal(value);
result = currrentVal > val;
currrentVal = Convert.ToDouble(currrentValue);
val = Convert.ToDouble(value);
result = currrentVal > val;
throw new Exception("Exception, Invalid argument type exception.");
currrentVal = Convert.ToInt16(currrentValue);
val = Convert.ToInt16(value);
result = currrentVal > val;
currrentVal = Convert.ToInt32(currrentValue);
val = Convert.ToInt32(value);
result = currrentVal > val;
currrentVal = Convert.ToInt64(currrentValue);
val = Convert.ToInt64(value);
result = currrentVal > val;
throw new Exception("Exception, Invalid argument type exception.");
currrentVal = Convert.ToSByte(currrentValue);
val = Convert.ToSByte(value);
result = currrentVal > val;
currrentVal = Convert.ToSingle(currrentValue);
val = Convert.ToSingle(value);
result = currrentVal > val;
currrentVal = Convert.ToString(currrentValue);
val = Convert.ToString(value);
result = currrentVal.Length > val.Length;
currrentVal = Convert.ToUInt16(currrentValue);
val = Convert.ToUInt16(value);
result = currrentVal > val;
currrentVal = Convert.ToUInt32(currrentValue);
val = Convert.ToUInt32(value);
result = currrentVal > val;
currrentVal = Convert.ToUInt64(currrentValue);
val = Convert.ToUInt64(value);
result = currrentVal > val;
throw new Exception("Exception, Invalid argument type exception.");
public bool IsGreaterThanOrEqual(int currrentValue, int value)
var result = (currrentValue >= value);
public bool IsGreaterThanOrEqual(long currrentValue, long value)
var result = (currrentValue >= value);
public bool IsGreaterThanOrEqual(double currrentValue, double value)
var result = (currrentValue >= value);
public bool IsGreaterThanOrEqual(DateTime currrentValue, DateTime value)
var result = (currrentValue >= value);
public bool IsLessThan(int currrentValue, int value)
var result = (currrentValue < value);
public bool IsLessThan(long currrentValue, long value)
var result = (currrentValue < value);
public bool IsLessThan(double currrentValue, double value)
var result = (currrentValue < value);
public bool IsLessThan(DateTime currrentValue, DateTime value)
var result = (currrentValue < value);
public bool IsLessThanOrEqual(int currrentValue, int value)
var result = (currrentValue <= value);
public bool IsLessThanOrEqual(long currrentValue, long value)
var result = (currrentValue <= value);
public bool IsLessThanOrEqual(double currrentValue, double value)
var result = (currrentValue <= value);
public bool IsLessThanOrEqual(DateTime currrentValue, DateTime value)
var result = (currrentValue <= value);
public bool IsMatch(string currentValue, string pattern)
var r = new Regex(pattern);
result = r.IsMatch(currentValue);
public bool IsGreaterThanNow(DateTime currrentValue)
var result = currrentValue > DateTime.Now;
public bool IsNotFutureDate(DateTime currrentValue)
var result = currrentValue <= DateTime.Now;
public bool IsEqual(int currrentValue, int value)
var result = currrentValue == value;
public bool IsEqual(long currrentValue, long value)
var result = currrentValue == value;
public bool IsEqual(double currrentValue, double value)
var result = Math.Abs(currrentValue - value) < 0.0000001;
public bool IsDateTimeEqual(DateTime currrentValue, DateTime value)
var result = currrentValue == value;
public bool IsDateEqual(DateTime currrentValue, DateTime value)
var result = currrentValue.Date == value.Date;
public bool IsTimeEqual(DateTime currrentValue, DateTime value)
var result = currrentValue.TimeOfDay == value.TimeOfDay;
public bool IsEqual<T>(T currrentValue, T value)
var t = currrentValue.GetType();
switch (Type.GetTypeCode(t))
currrentVal = Convert.ToBoolean(currrentValue);
val = Convert.ToBoolean(value);
result = currrentVal == val;
currrentVal = Convert.ToByte(currrentValue);
val = Convert.ToByte(value);
result = currrentVal == val;
currrentVal = Convert.ToChar(currrentValue);
val = Convert.ToChar(value);
result = currrentVal == val;
currrentVal = Convert.ToDateTime(currrentValue);
val = Convert.ToDateTime(value);
result = currrentVal == val;
currrentVal = Convert.ToDecimal(currrentValue);
val = Convert.ToDecimal(value);
result = currrentVal == val;
currrentVal = Convert.ToDouble(currrentValue);
val = Convert.ToDouble(value);
result = currrentVal == val;
throw new Exception("Exception, Invalid argument type exception.");
currrentVal = Convert.ToInt16(currrentValue);
val = Convert.ToInt16(value);
result = currrentVal == val;
currrentVal = Convert.ToInt32(currrentValue);
val = Convert.ToInt32(value);
result = currrentVal == val;
currrentVal = Convert.ToInt64(currrentValue);
val = Convert.ToInt64(value);
result = currrentVal == val;
throw new Exception("Exception, Invalid argument type exception.");
currrentVal = Convert.ToSByte(currrentValue);
val = Convert.ToSByte(value);
result = currrentVal == val;
currrentVal = Convert.ToSingle(currrentValue);
val = Convert.ToSingle(value);
result = currrentVal == val;
currrentVal = Convert.ToString(currrentValue);
val = Convert.ToString(value);
result = currrentVal.Length == val.Length;
currrentVal = Convert.ToUInt16(currrentValue);
val = Convert.ToUInt16(value);
result = currrentVal == val;
currrentVal = Convert.ToUInt32(currrentValue);
val = Convert.ToUInt32(value);
result = currrentVal == val;
currrentVal = Convert.ToUInt64(currrentValue);
val = Convert.ToUInt64(value);
result = currrentVal == val;
throw new Exception("Exception, Invalid argument type exception.");
public bool TwoWayComparisonForOneValues(
Func<int, int, bool> ruleLeft,
Func<int, int, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) && ruleRight(currentValue, ruleRightValue);
public bool TwoWayComparisonForOneValues(
Func<long, long, bool> ruleLeft,
Func<long, long, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) && ruleRight(currentValue, ruleRightValue);
public bool TwoWayComparisonForOneValues(
Func<double, double, bool> ruleLeft,
Func<double, double, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) && ruleRight(currentValue, ruleRightValue);
public bool TwoWayComparisonForOneValues(
Func<DateTime, DateTime, bool> ruleLeft,
Func<DateTime, DateTime, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) && ruleRight(currentValue, ruleRightValue);
public bool TwoWayComparisonForOneValues<T>(
Func<T, T, bool> ruleLeft,
Func<T, T, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) && ruleRight(currentValue, ruleRightValue);
public bool TwoWayComparisonForTwoValues(
Func<int, int, int, bool> ruleLeft,
Func<int, int, int, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) &&
ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool TwoWayComparisonForTwoValues(
Func<long, long, long, bool> ruleLeft,
Func<long, long, long, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) &&
ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool TwoWayComparisonForTwoValues(
Func<double, double, double, bool> ruleLeft,
Func<double, double, double, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) &&
ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool TwoWayComparisonForTwoValues(
Func<DateTime, DateTime, DateTime, bool> ruleLeft,
Func<DateTime, DateTime, DateTime, bool> ruleRight,
DateTime ruleRightValue1,
DateTime ruleRightvalue2)
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) &&
ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool TwoWayComparisonForTwoValues<T>(
Func<T, T, T, bool> ruleLeft,
Func<T, T, T, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) &&
ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool OneWayComparisonForOneValues(
Func<int, int, bool> ruleLeft,
Func<int, int, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) || ruleRight(currentValue, ruleRightValue);
public bool OneWayComparisonForOneValues(
Func<long, long, bool> ruleLeft,
Func<long, long, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) || ruleRight(currentValue, ruleRightValue);
public bool OneWayComparisonForOneValues(
Func<double, double, bool> ruleLeft,
Func<double, double, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) || ruleRight(currentValue, ruleRightValue);
public bool OneWayComparisonForOneValues(
Func<DateTime, DateTime, bool> ruleLeft,
Func<DateTime, DateTime, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) || ruleRight(currentValue, ruleRightValue);
public bool OneWayComparisonForOneValues<T>(
Func<T, T, bool> ruleLeft,
Func<T, T, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue) || ruleRight(currentValue, ruleRightValue);
public bool OneWayComparisonForTwoValues(
Func<int, int, int, bool> ruleLeft,
Func<int, int, int, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) || ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool OneWayComparisonForTwoValues(
Func<long, long, long, bool> ruleLeft,
Func<long, long, long, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) || ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool OneWayComparisonForTwoValues(
Func<double, double, double, bool> ruleLeft,
Func<double, double, double, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) || ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool OneWayComparisonForTwoValues(
Func<DateTime, DateTime, DateTime, bool> ruleLeft,
Func<DateTime, DateTime, DateTime, bool> ruleRight,
DateTime ruleRightValue1,
DateTime ruleRightvalue2)
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) || ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public bool OneWayComparisonForTwoValues<T>(
Func<T, T, T, bool> ruleLeft,
Func<T, T, T, bool> ruleRight,
var result = ruleLeft(currentValue, ruleLeftValue1, ruleLeftvalue2) || ruleRight(currentValue, ruleRightValue1, ruleRightvalue2);
public static void Main()
var baseRule = new BaseRule();
var result = (baseRule.IsBetweenTwoValues(age, 30, 40) && baseRule.IsEqual(gender, true)) || ((baseRule.IsBetweenTwoValues(age, 20, 30) && baseRule.IsEqual(gender, false)));
baseRule.OneWayComparisonForTwoValues(
baseRule.IsBetweenTwoValues,
baseRule.IsBetweenTwoValues,
var result3 = baseRule.OneWayComparisonForOneValues(
var result4 = baseRule.TwoWayComparisonForOneValues(
baseRule.IsLessThanOrEqual,
Console.WriteLine("Result: " + result);
Console.WriteLine("Result: " + result2);
Console.WriteLine("Result: " + result3);
Console.WriteLine("Result: " + result4);