【发布时间】:2010-12-23 03:53:42
【问题描述】:
我的一些域对象包含日期范围作为一对开始和结束日期属性:
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 中有一个。
根据我的经验,使对象层次结构更深通常会使事情复杂化。这些对象确实会发送到 ReportViewer 控件显示的 RDLC 报告,但这是次要的。我会将视图弯曲到模型而不是反之。不过,我们不受属性名称的束缚,并且愿意妥协,例如:
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 类可以提供帮助。前一阵子我开始写基础:adamjamesnaylor.com/2012/11/04/C-DateRange-Class.aspx
-
@AdamNaylor:您的链接似乎已关闭...
标签: .net model tuples date-range