public CLocalLimit(DateTime date, e_Direction direction) { _date = date; _dir = direction; _func = new function(_date, _dir); }
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)); }
/// <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; }
/// <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"); } }
/// <summary> /// Метод получения направления зависимости /// </summary> /// <param name="direction">Направление зависимости</param> public void SetDirection(e_Direction direction) { this.direction = direction; }
/// <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"); } }
public Func<DateTime, DateTime, DateTime> CreateFunctionCheck(e_Direction direction) { return _function.GetFunctionDir(direction); }
public IFunction CreateFunction(DateTime date, e_Direction direction) { return new function(date, direction); }