示例#1
0
 public RequiredIfAttribute(string dependentProperty, Operator @operator, object dependentValue)
     : base(dependentProperty)
 {
     Operator       = @operator;
     DependentValue = dependentValue;
     Metadata       = OperatorMetadata.Get(Operator);
 }
        protected override bool InternalIsValid(object value, object dependentPropertyValue)
        {
            if (Metadata.IsValid(dependentPropertyValue, DependentValue))
            {
                return(OperatorMetadata.Get(Operator.RegExMatch).IsValid(value, Pattern));
            }

            return(true);
        }
示例#3
0
        public Queue <string> Parse(string mathematicalExpression)
        {
            var operatorStack = new Stack <OperatorMetadata>();
            var outputQueue   = new Queue <string>();

            string accumulatingNumber = string.Empty;

            foreach (char character in mathematicalExpression)
            {
                if (OperatorManifest.IsOperator(character))
                {
                    outputQueue.Enqueue(accumulatingNumber);
                    accumulatingNumber = string.Empty;
                    OperatorMetadata operatorMetadata = OperatorManifest.Parse(character);

                    while (operatorStack.Count > 0 && operatorStack.Peek().Priority >= operatorMetadata.Priority)
                    {
                        OperatorMetadata poppedOperator = operatorStack.Pop();
                        outputQueue.Enqueue(poppedOperator.Symbol);
                    }

                    operatorStack.Push(operatorMetadata);
                }
                else
                {
                    accumulatingNumber += character;
                }
            }

            if (!string.IsNullOrEmpty(accumulatingNumber))
            {
                outputQueue.Enqueue(accumulatingNumber);
            }

            while (operatorStack.Count > 0)
            {
                outputQueue.Enqueue(operatorStack.Pop().Symbol);
            }

            return(outputQueue);
        }
示例#4
0
 public IsAttribute(Operator @operator, string dependentProperty) : base(dependentProperty)
 {
     Operator   = @operator;
     PassOnNull = false;
     _metadata  = OperatorMetadata.Get(Operator);
 }