Exemple #1
0
        /// <summary>
        /// Specify the member for the output cache
        /// </summary>
        /// <param name="functionExpression"></param>
        /// <returns></returns>
        public IMethodCacheRuleBuilder <T> ForMember(Expression <Func <T, object> > functionExpression)
        {
            var cacheAttribute = new TCacheAttribute();

            cacheAttribute.SetCacheStrategy(this);

            var expression = new ExpressionSetting <T, TCacheAttribute>(cacheAttribute)
            {
                Expression = functionExpression,
            };

            _expressions.Add(expression);
            _currentExpression = expression;
            return(this);
        }
Exemple #2
0
        public void Test2()
        {
            ExpressionSetting.SetSetting(new MySetting2());

            Assert.AreEqual(false, Expression.From("NOT(true)").Invoke().BooleanResult);
            Assert.AreEqual(true, Expression.From("NOT(false)").Invoke().BooleanResult);

            Assert.AreEqual(true, Expression.From("IF(1==1,true,false)").Invoke().BooleanResult);
            Assert.AreEqual("A1", Expression.From("IF(1==1,'A1','B2')").Invoke().ToString());


            var parameters = new Parameters()
            {
                { "num1", 2 },
                { "num2", 2.2 },
                { "num3", -2 },
                { "num4", -2.2 },
                { "numlist1", new List <double>()
                  {
                      1, 2, 3, 4, 5
                  } },
                { "str1", "aaa" },
                { "str2", "bbb" },
                { "str3", "ccc" },
                { "str4", "ddd" },
                { "strlist1", new List <string>()
                  {
                      "aaa", "bbb", "ccc"
                  } },
            };

            Assert.AreEqual(4.2, Expression.From("num1+num2").Invoke(parameters).NumberResult, Delta);
            Assert.AreEqual(true, Expression.From("IN(num1,numlist1)").Invoke(parameters).BooleanResult);
            Assert.AreEqual(true, Expression.From("IN(num2,numlist1,2.2)").Invoke(parameters).BooleanResult);
            Assert.AreEqual(true, Expression.From("IN(str1,strlist1)").Invoke(parameters).BooleanResult);
            Assert.AreEqual(false, Expression.From("IN(str4,strlist1)").Invoke(parameters).BooleanResult);
            Assert.AreEqual(true, Expression.From("IN(str4,strlist1) && IN(str1,strlist1) || (1+2*3-4)==MAX(1+2,2)").Invoke(parameters).BooleanResult);


            ExpressionSetting.SetSetting(new ExpressionSetting());
        }