我有一个Event
带有DateTime
成员的基类TimeStamp
。许多其他事件类将由此派生。
我希望能够快速搜索事件列表,所以我想使用二进制搜索。
(列表数据按时间戳排序,但同时发生的事件可能有重复的时间戳)
所以我开始写这样的东西:
public class EventList<T> : List<T> where T : Event
{
private IComparer<T> comparer = (x, y) => Comparer<DateTime>.Default.Compare(x.TimeStamp, y.TimeStamp);
public IEnumerable<T> EventsBetween(DateTime inFromTime, DateTime inToTime)
{
// Find the index for the beginning.
int index = this.BinarySearch(inFromTime, comparer);
// BLAH REST OF IMPLEMENTATION
}
}
问题是 BinarySearch 只接受 T (所以 - 一个Event
类型)作为参数,而我想根据T的成员- TimeStamp进行搜索。
什么是解决这个问题的好方法?