オブジェクトの汎用リストをソートする正しい方法を見つけようとしています。私のデータ構造の簡単な例:
// The base class
public abstract class Item : IComparable<Item> {
public enum Category { Hats, Shirts, ... }
public Category category;
public int CompareTo (Item that) {
...
}
}
// One of several classes extending Item
public class Hat : Item {
public int CompareTo (Hat that) {
...
}
}
Item を拡張する各クラスのリストを維持するマネージャー クラスがあります。
Dictionary<Item.Category, List<Item>> _items;
...
foreach (Item.Category category in Enum.GetValues(typeof(Item.Category))) {
List<Item> list = _items[category];
list.Sort();
}
私が抱えている問題は、 を呼び出すときにList<Item>.Sort()
、明らかにクラス固有のCompareTo()
関数を利用していないことです。これにアプローチする適切な方法は何ですか?