Beispiel #1
0
        public void TestCount()
        {
            IFunction func = FunctionFactory.Create(CalcEnum.Count);

            func.Add(1);
            func.Add(1);
            Assert.AreEqual(func.GetValue(), 2);
        }
Beispiel #2
0
        public void TestAve()
        {
            IFunction func = FunctionFactory.Create(CalcEnum.Ave);

            func.Add(100);
            func.Add(200);
            Assert.AreEqual(func.GetValue(), 150);
        }
 public void Aggregate(object value)
 {
     if (m_calc != null)
     {
         m_calc.Add(value);
     }
 }
Beispiel #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            //动态加载程序集并创建对象
            IFunction objfunction = (IFunction)Assembly.LoadFrom("Function.dll").CreateInstance("Function.Function");
            int       a           = Convert.ToInt32(this.textBox1.Text);
            int       b           = Convert.ToInt32(this.textBox2.Text);
            string    result      = "0";

            //通过接口完成计算
            switch (this.comboBox1.SelectedIndex)
            {
            case 0:
                result = objfunction.Add(a, b).ToString();
                break;

            case 1:
                result = objfunction.Sub(a, b).ToString();
                break;

            case 2:
                result = objfunction.Multiply(a, b).ToString();
                break;

            case 3:
                result = objfunction.Division(a, b).ToString();
                break;

            default:
                break;
            }
            this.textBox3.Text = result;
        }
        /// <summary>
        /// Registers functions.
        /// </summary>
        public static void RegisterFunctions()
        {
            // Special methods
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Function), ExpressionHelper.FunctionWithName);
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Val), ExpressionHelper.Val);

            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Abs));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Avg));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.AvgDistinct), FunctionName.Avg,
                                            (expression, name) =>
            {
                return(ExpressionHelper.Function(expression, name).Before(SqlBuilder.Instance.Raw("DISTINCT")));
            });
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Cast));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Ceiling));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Coalesce), true);
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Concat), true);
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Count), (expression, name) =>
            {
                IFunction func = ExpressionHelper.Function(expression, name);
                if (expression.Arguments.Count == 0)
                {
                    func.Add(SqlBuilder.Instance.Col("*"));
                }
                return(func);
            });
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.CountDistinct), FunctionName.Count,
                                            (expression, name) =>
            {
                return(ExpressionHelper.Function(expression, name).Before(SqlBuilder.Instance.Raw("DISTINCT")));
            });
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Floor));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.LastInsertId));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Length));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Lower));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.LTrim));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Max));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Min));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Now));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.NullIf));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Replace));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Round));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.RTrim));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Substring));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Sum));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.SumDistinct), FunctionName.Sum,
                                            (expression, name) =>
            {
                return(ExpressionHelper.Function(expression, name).Before(SqlBuilder.Instance.Raw("DISTINCT")));
            });
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Trim));
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Upper));
        }
Beispiel #6
0
 public bool SaveFunction(FunctionModel model)
 {
     try
     {
         if (model.FunctionId == 0)
         {
             return(_functionManager.Add(model));
         }
         return(_functionManager.Update(model));
     }
     catch (Exception ex)
     {
         throw new TpoBaseException(ex.Message);
     }
 }
Beispiel #7
0
        public ActionResult AddFunction()
        {
            Function function = new Function();

            function.DisplayName  = "测试一下";
            function.ActionUrl    = "1312";
            function.DisplayOrder = 1;
            function.Enable       = false;
            function.FunctionGuid = Guid.NewGuid();
            function.FunctionName = "Function名称";
            function.FunctionType = "23423";
            function.ParentGuid   = Guid.Empty;
            function.TimeCreated  = DateTime.Now;
            FunctionService.Add(function);
            return(View(function));
        }
Beispiel #8
0
        /// <summary>
        /// Initialize the class with the implemented functions.
        /// </summary>
        /// <param name="registerSystemFunctions">If true, register also system functions.</param>
        public static void Initialize(bool registerSystemFunctions = true)
        {
            // Operators
            RegisterOperators();

            // Function method
            ExpressionProcessor.AddFunction(typeof(SqlExp), nameof(SqlExp.Function), expression =>
            {
                if (expression.Arguments.Count == 0)
                {
                    throw new ArgumentException("Invalid expression");
                }

                ConstantExpression expName = expression.Arguments[0] as ConstantExpression;
                if (expName == null)
                {
                    throw new ArgumentException("Invalid expression");
                }

                IFunction func = SqlBuilder.Instance.Function(((string)expName.Value).ToUpperInvariant());

                if (expression.Arguments.Count > 1)
                {
                    NewArrayExpression expParams = expression.Arguments[1] as NewArrayExpression;
                    if (expParams != null)
                    {
                        foreach (var arg in expParams.Expressions)
                        {
                            func.Add(SqlBuilder.Instance.Val(arg));
                        }
                    }
                }

                return(func);
            });

            // Functions
            RegisterFunctions();

            // System functions
            if (registerSystemFunctions)
            {
                RegisterSystemFunctions();
            }
        }