首先,我知道这个问题已被多次询问,但这些提供的解决方案并没有帮助我。
我有以下Classes
:
public class PartType : IComparable<PartType>
{
public int CompareTo(PartType other)
{
return this.Type.CompareTo(other.Type);
}
// Some code
public int Id { get; set; }
public string Type { get; set; }
}
以上课程使用上述课程。
public class Part : IComparable<Part>
{
public int CompareTo(Part other)
{
return this.Material.CompareTo(other.Material);
}
public string Material { get; set; }
public PartType Type { get; set; }
}
现在,我有一个ObservableCollection<PartType>
我可以在string Type
上排序没有任何问题(不需要做任何其他事情)。
我的其他ObservableCollection<Part>
我可以对string Material
进行排序,但不能对PartType Type
进行排序(对于因使用单词类型两次而产生的混淆感到抱歉。)
答案 0 :(得分:4)
IComparable
未实施,仅IComparable<T>
...
在您的情况下,用于对ObservableCollection<T>
进行排序的方法似乎希望实现此非泛型接口。 (你没有说明你的排序!)。
如果您使用System.Linq.OrderBy
扩展程序,则它应仅适用于通用接口,因为Comparer.Default具有内部回退。
您应该始终为您的类实现通用和非通用接口,以支持与调用者是否“理解”泛型无关的常见行为。