Alcuni dei miei oggetti di dominio contengono gli intervalli di date come un paio di inizio e di fine proprietà:Devo creare un oggetto 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; }
}
e mi ritrovo con un sacco di questo:
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);
L'ultimo mi ha fatto meraviglia ... Devo implementare una classe DateRange? Non sono a conoscenza di uno nel BCL.
Nella mia esperienza, rendere la gerarchia degli oggetti più profonda spesso complica le cose. Questi oggetti vengono inviati ai report RDLC visualizzati dal controllo ReportViewer, ma questo è secondario. Piegherò la vista sul modello piuttosto che viceversa. Noi non siamo legati ai nomi di proprietà, però, e sarebbe disposto a compromessi con qualcosa di simile: convalida
public class DateRange {
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
Period p = new Period();
DateTime t = p.EffectiveDateRange.StartDate;
Un vantaggio di una classe DateRange sarebbe centralizzata della data di fine viene dopo la data di inizio, e che semplificherà il mio metodo di firme:
abstract public int Foo(DateRange dateRange);
abstract public decimal Bar(DateRange dateRange);
abstract public ICollection<DateRange> FooBar(DateRange dateRange);
io non sono solo sicuro che una classe DateRange non mi entrare in più problemi che il suo valore. Opinioni?
Domanda laterale: ho perso una generica classe di tuple per uso generale nel BCL da qualche parte? So che ci sono alcuni molto specifici che fluttuano in vari spazi dei nomi. Inquinare le firme dei metodi di dominio pubblico con i tipi C5 sembra molto, molto sporco.
Penso che una classe DateRange possa essere d'aiuto. Ho iniziato a scrivere le basi per un po 'di tempo fa: http://www.adamjamesnaylor.com/2012/11/04/C-DateRange-Class.aspx –
@AdamNaylor: i tuoi link sembrano essere in calo ... – testing