memberEvent
を持つ基本クラスが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 (つまり型) のみをパラメーターとして受け入れるのに対し、Tのメンバー( TimeStampEvent
) に基づいて検索したいことです。
これにアプローチする良い方法は何でしょうか?