Некоторые из моих объектов домена содержат диапазоны дат, как пара даты начала и окончания свойства:Должен ли я создать объект DateRange?
public class Period {
public DateTime EffectiveDate { get; set; }
public DateTime ThroughDate { get; set; }
}
public class Timeline {
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
И я оказываюсь с большим количеством этого:
abstract public int Foo(DateTime startDate, DateTime endDate);
abstract public decimal Bar(DateTime startDate, DateTime endDate);
abstract public ICollection<C5.Rec<DateTime, DateTime>> FooBar(DateTime startDate, DateTime endDate);
Последние один из меня интересно ... Должен ли я реализовать класс DateRange? Я не знаю об этом в BCL.
В моем опыте, делая иерархию объектов глубже, часто усложняет ситуацию. Эти объекты отправляются в отчеты RDLC, отображаемые элементом управления ReportViewer, но это вторично. Я склоню взгляд к модели, а не наоборот. Мы не привязаны к именам свойств, хотя и были бы готовы пойти на компромисс с чем-то вроде:
public class DateRange {
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
Period p = new Period();
DateTime t = p.EffectiveDateRange.StartDate;
Преимущества класса DateRange будет централизованной проверка даты окончания наступающей после даты начала и это упростит мои подписи методы:
abstract public int Foo(DateRange dateRange);
abstract public decimal Bar(DateRange dateRange);
abstract public ICollection<DateRange> FooBar(DateRange dateRange);
Я просто не уверен, что класс DateRange не получит меня больше проблем, чем его ценность. Мнения?
Боковой вопрос: Пропустил ли я общий универсальный класс кортежа в BCL где-нибудь? Я знаю, что в разных пространствах имен есть некоторые очень специфичные. Загрязнение моих подходов к методу общественного достояния с типами C5 чувствует себя очень, очень грязно.
Я определенно думаю, что класс DateRange может помочь. Я начал писать основы на некоторое время назад: http://www.adamjamesnaylor.com/2012/11/04/C-DateRange-Class.aspx –
@AdamNaylor: ваши ссылки, кажется, не работают ... – testing