У меня есть базовый класс 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.
Что было бы хорошим способом приблизиться к этому?