using System; namespace Be.Timvw.Framework.Domain { public class Effectivity : IEffectivity where T : IComparable { #region Private Fields private readonly T element; private readonly IRange validityPeriod; #endregion #region Public Constructors public Effectivity(T element, IRange validityPeriod) { this.element = element; this.validityPeriod = validityPeriod; } #endregion #region IEffectivity Members public T Element { get { return this.element; } } public IRange ValidityPeriod { get { return this.validityPeriod; } } public bool IsEffectiveOn(DateTime validityDate) { return this.validityPeriod.Includes(validityDate); } #endregion #region IComparable> Members public int CompareTo(IEffectivity other) { int validityPeriodCompareResult = this.validityPeriod.CompareTo(other.ValidityPeriod); if (validityPeriodCompareResult != 0) { return validityPeriodCompareResult; } return this.element.CompareTo(other.Element); } #endregion } }