public lim(e_dot_Limit vLimit, DateTime Date) { _direction = -10; initExpressionValues(); _limit = vLimit; date = Date; initInternal(); }
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); }
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()); }
public void setType(e_dot_Limit Type) { throw new NotImplementedException(); }