Example #1
0
 public RequiredIfAttribute(string propertyName, object value, ConditionOps conditionOp, string errorMessage = "")
 {
     PropertyName = propertyName;
     ErrorMessage = errorMessage;
     Value        = value;
     Comparison   = Conditions[conditionOp];
 }
 public DateComparisonAttribute(string propertyName, ConditionOps conditionOp, string errorMessage = "", bool nullable = false, int maxPlusMonth = 0)
 {
     PropertyName = propertyName;
     ErrorMessage = errorMessage;
     Comparison   = Conditions[conditionOp];
     Nullable     = nullable;
     MaxPlusMonth = maxPlusMonth;
 }
        public CorrectValueRuleNodeState(
            VerifiableMemberContract contract,
            IGroupedValueToken groupedToken,
            IValueToken currentTokenPtr,
            ConditionOps implicitNextOps = ConditionOps.Break
            )
        {
            _contract = contract;

            _rootNode        = groupedToken;
            _workingNode     = groupedToken;
            _currentTokenPtr = currentTokenPtr;

            _nextOps = implicitNextOps;
        }
Example #4
0
 /// <summary>
 /// 如果 Right 的优先级高于 Left,
 /// 则需要将 Left 打包为 GroupedToken,然后再进行联立
 /// </summary>
 /// <param name="left"></param>
 /// <param name="right"></param>
 /// <returns></returns>
 public static bool IsHigherPriority(ConditionOps left, ConditionOps right)
 {
     if (left == ConditionOps.Break)
     {
         return(false);
     }
     if (left == ConditionOps.And && left < right)
     {
         return(true);
     }
     if (left == ConditionOps.Or)
     {
         return(false);
     }
     return(false);
 }
        public void NextOps(ConditionOps ops, bool ignoreFixBreakOps, bool tailOps)
        {
            if (!ignoreFixBreakOps && ops == ConditionOps.Break)
            {
                ops = ConditionOps.And;
            }

            if (ConditionOpsHelper.IsHigherPriority(_nextOps, ops))
            {
                DivideNewWorkingNode(ops);
                _nextOps = ops;
                return;
            }

            if (!tailOps)
            {
                _workingNode.Relationship = ops;
            }

            _nextOps = ops;
        }