/// <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); }
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()); }