Я хочу создать некоторый класс, который может рассчитывать абсолютный или относительный период времени.
Значение: конструктор получит либо период времени и единицы (3 недели), либо два DateTime
времени начала и окончания.Я написал следующий код:
public class TimePeriod
{
public State TimePerriodState { get; private set; }
public RelativeTime RelativeTimePeriod { get; private set; }
public int UnitsOfTime { get; private set; }
public DateTime? StartTime { get; private set; }
public DateTime? EndTime { get; private set; }
public TimePeriod(RelativeTime relativeTime, int unitsOfTime)
{
TimePerriodState = State.Absolute;
RelativeTimePeriod = relativeTime;
UnitsOfTime = unitsOfTime;
}
public TimePeriod(DateTime startTime , DateTime endTime)
{
TimePerriodState = State.Relative;
StartTime = startTime;
EndTime = endTime;
}
public enum State
{
None,
Absolute,
Relative
}
public enum RelativeTime
{
None,
Hours,
Days,
Weeks,
Months,
Year
}
}
Но мне не нравится, что использование основано на состоянии.В конце данные появятся в пользовательском интерфейсе в виде двух разных элементов управления.Есть ли лучший способ сделать API немного лучше?Может быть, передать данные и вычислить dateTime на лету или что-то в этом роде?
ОБНОВЛЕНИЕ:
использование относится к любому времени его использования.Значение ввести интервал времени невозможно.Допустим, нам нужно относительное время, предшествующее 10 дням с этого момента или фиксированные дни от X до Y
TimeSpan
будет рассчитано в другом классе BL (это класс POCO)