public static bool Evaluate <T>(this NumericOperator @operator, T value, T comparisonValue) { @operator.Validate(nameof(@operator)); var isOdd = ((int)@operator) % 2 == 1; return(EvaluateInternal(isOdd ? @operator + 1 : @operator) ^ isOdd); bool EvaluateInternal(NumericOperator effectiveOperator) { return(effectiveOperator switch { NumericOperator.Equals => Number.Equals(value, comparisonValue), NumericOperator.LessThan => Number.LessThan(value, comparisonValue), NumericOperator.GreaterThan => Number.GreaterThan(value, comparisonValue), _ => throw new NotSupportedException($"NumericOperator of {@operator} is not supported"), }); }
public static NumericOperator Invert(this NumericOperator @operator) { @operator.Validate(nameof(@operator)); return(@operator + (((int)@operator) % 2 == 0 ? 1 : -1)); }