Example #1
0
 public lim(e_dot_Limit vLimit, DateTime Date)
 {
     _direction = -10;
     initExpressionValues();
     _limit = vLimit;
     date   = Date;
     initInternal();
 }
Example #2
0
        public getFunctionLimit getFunctionLim(e_dot_Limit Limit)
        {
            int tmp = 0;
            Func <DateTime, DateTime, result> outFnc = getFunction(Limit, ref tmp);

            getFunctionLimit result = (DateTime dLimit, DateTime Date, out DateTime dResult) =>
            {
                result rslt = outFnc(dLimit, Date);
                dResult = rslt.date;
                return(rslt.allow);
            };

            return(result);
        }
Example #3
0
        private Func <DateTime, DateTime, result> getFunction(e_dot_Limit vLimit, ref int Direction)
        {
            switch (vLimit)
            {
            case e_dot_Limit.inDate:
                etSign    = ExpressionType.Equal;
                Direction = 0;
                break;

            case e_dot_Limit.notEarlier:
                etSign    = ExpressionType.GreaterThanOrEqual;
                Direction = 1;
                break;

            case e_dot_Limit.notLater:
                etSign    = ExpressionType.LessThanOrEqual;
                Direction = -1;
                break;

                /*case e_dot_Limit.None:
                 *  Direction = -2; //направление отсутствует
                 *  return nullProcess;*/
            }

            Expression cmpOperator = Expression.MakeBinary(etSign, pDate, pLimit);

            Expression cmp = Expression.IfThenElse(
                cmpOperator,
                Expression.Block(
                    setDate,
                    setTrue),
                Expression.Block(
                    setLimit,
                    setFalse)
                );

            BlockExpression resBlock = Expression.Block(
                new[] { pValue, pAllow },
                cmp,
                pResult
                );

            return(Expression.Lambda <Func <DateTime, DateTime, result> >(resBlock, pLimit, pDate).Compile());
        }
Example #4
0
 public void setType(e_dot_Limit Type)
 {
     throw new NotImplementedException();
 }
Example #5
0
 public void setType(e_dot_Limit Type)
 {
     throw new NotImplementedException();
 }