コード例 #1
0
        public static bool Evaluate(this StringOperator @operator, string?value, string?comparisonValue)
        {
            @operator.Validate(nameof(@operator));

            var isOdd = ((int)@operator) % 2 == 1;

            return(EvaluateInternal(isOdd ? @operator + 1 : @operator) ^ isOdd);

            bool EvaluateInternal(StringOperator effectiveOperator)
            {
                return(effectiveOperator switch
                {
                    StringOperator.Equals => string.Equals(value, comparisonValue, StringComparison.OrdinalIgnoreCase),
                    StringOperator.EqualsExact => string.Equals(value, comparisonValue, StringComparison.Ordinal),
                    StringOperator.Contains => comparisonValue == null || (value == null ? comparisonValue.Length == 0 : value.IndexOf(comparisonValue, StringComparison.OrdinalIgnoreCase) >= 0),
                    StringOperator.StartsWith => comparisonValue == null || (value == null ? comparisonValue.Length == 0 : value.StartsWith(comparisonValue, StringComparison.OrdinalIgnoreCase)),
                    StringOperator.EndsWith => comparisonValue == null || (value == null ? comparisonValue.Length == 0 : value.EndsWith(comparisonValue, StringComparison.OrdinalIgnoreCase)),
                    StringOperator.EqualInLength => (value?.Length ?? 0) == (comparisonValue?.Length ?? 0),
                    StringOperator.ShorterThan => (value?.Length ?? 0) < (comparisonValue?.Length ?? 0),
                    StringOperator.LongerThan => (value?.Length ?? 0) > (comparisonValue?.Length ?? 0),
                    _ => throw new NotSupportedException($"StringOperator of {@operator} is not supported"),
                });
            }
コード例 #2
0
        public static StringOperator Invert(this StringOperator @operator)
        {
            @operator.Validate(nameof(@operator));

            return(@operator + (((int)@operator) % 2 == 0 ? 1 : -1));
        }