我正在尝试找出对通用对象列表进行排序的正确方法。我的数据结构的一个简单示例:
// 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()
函数。解决这个问题的正确方法是什么?