コード例 #1
0
    public int ComparePrecedence(IMyOperator o)
    {
        bool result = (o is MyBaseOperator);
        int  tempPrecedence;

        if (result)
        {
            MyBaseOperator other = (MyBaseOperator)o;
            if (precedence > other.precedence)
            {
                tempPrecedence = 1;
            }
            else if (other.precedence == precedence)
            {
                tempPrecedence = 0;
            }
            else
            {
                tempPrecedence = -1;
            }
            return(tempPrecedence);
            //since I'm not used to the bottom structure, I unfolded it above.
            //return precedence > other.precedence ? 1 :
            //    other.precedence == precedence ? 0 : -1;
        }
        else
        {
            return(-o.ComparePrecedence(this));
        }
    }
コード例 #2
0
ファイル: BinderTests.cs プロジェクト: chenzuo/nquery
		public void OperatorsInBaseClassWorkAsExpected()
		{
			MyBaseOperator left = new MyBaseOperator(13);
			MyBaseOperator right = new MyBaseOperator(11);
			MyBaseOperator result;

			Expression<MyBaseOperator> expression = new Expression<MyBaseOperator>();
			expression.Parameters.Add("Left", left.GetType(), left);
			expression.Parameters.Add("Right", right.GetType(), right);

			expression.Text = "Left + Right";
			result = expression.Evaluate();
			Assert.AreEqual(24, result.Value);

			expression.Text = "Left - Right";
			result = expression.Evaluate();
			Assert.AreEqual(2, result.Value);
		}