示例#1
0
            public CLocalLimit(DateTime date, e_Direction direction)
            {
                _date = date;
                _dir = direction;

                _func = new function(_date, _dir);
            }
示例#2
0
            public void SetDirection(e_Direction direction)
            {
                if (_dir == direction) return;

                e_Direction temp = _dir;
                _dir = direction;

                _func.SetDirection(_dir);
                
                OnDirectionChange(new ea_ValueChange<e_Direction>(temp, _dir));
            }
示例#3
0
 /// <summary>
 /// Конструктор экземпляра класса зависимости от даты
 /// </summary>
 /// <param name="date">Дата зависимости</param>
 /// <param name="direction">Направление зависимости</param>
 public function(DateTime date, e_Direction direction)
 {
     this.direction = direction;
     this.date = date;
     Function = GetSvcFunction(Direction);
     sender = this;
 }
示例#4
0
        /// <summary>
        /// Получение делегата реализации механизма зависимости основывающееся на внутренней дате зависимости
        /// </summary>
        /// <param name="direction">Направление зависимости</param>
        /// <returns>Делегат реализации механизма зависимости основывающееся на внутренней дате зависимости</returns>
        protected Func<DateTime, DateTime> GetSvcFunction(e_Direction direction)
        {
            switch(direction)
            {
                //case eDirection.LeftMax:
                //case eDirection.RightMax:
                case e_Direction.Fixed:
                    return new Func<DateTime, DateTime>((Date) => this.Date);

                case e_Direction.Left:
                    return new Func<DateTime, DateTime>(
                    (Date) => (Date > this.Date) ? this.Date : Date);

                case e_Direction.Right:
                    return new Func<DateTime, DateTime>(
                    (Date) => (Date < this.Date) ? this.Date : Date);
                default:
                    throw new Exception("getSvcFunction: wrong direction value");
            }   

        }
示例#5
0
 /// <summary>
 /// Метод получения направления зависимости
 /// </summary>
 /// <param name="direction">Направление зависимости</param>
 public void SetDirection(e_Direction direction)
 { this.direction = direction; }
示例#6
0
        /// <summary>
        /// Метод получения нового делегата реализующего механику зависимости с направлением заданным параметром метода.
        /// </summary>
        /// <param name="direction">Направление зависимости получаемого делегата</param>
        /// <returns>Делегат реализующий механику зависимости </returns>
        public Func<DateTime, DateTime, DateTime> GetFunctionDir(e_Direction direction)
        {
            switch (direction)
            {
                //case eDirection.LeftMax:
                //case eDirection.RightMax:
                case e_Direction.Fixed:
                    return new Func<DateTime, DateTime, DateTime>(
                        (limit, date) => date = limit);

                case e_Direction.Left:
                    return new Func<DateTime, DateTime, DateTime>(
                    (limit, date) => (date > limit) ? limit : date);

                case e_Direction.Right:
                    return new Func<DateTime, DateTime, DateTime>(
                    (limit, date) => (date < limit) ? limit : date);
                default:
                    throw new Exception("getSvcFunction: wrong direction value");
            }
        }
示例#7
0
 public Func<DateTime, DateTime, DateTime> CreateFunctionCheck(e_Direction direction)
 { return _function.GetFunctionDir(direction); }
示例#8
0
 public IFunction CreateFunction(DateTime date, e_Direction direction)
 { return new function(date, direction); }