首先,我知道这个问题已经被问过多次了,但是这些解决方案对我没有帮助。
我有以下内容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
(对不起,两次使用单词Type造成的混乱)。
IComparable
没有实现,只有IComparable<T>
...
在您的情况下,用于排序的方法ObservableCollection<T>
似乎期望实现该非泛型接口。(您没有说明如何排序!)。
如果您使用的是System.Linq.OrderBy
扩展程序,则它应仅适用于通用接口,因为Comparer.Default具有内部回退。
您应该始终为类实现泛型和非泛型接口,以支持与调用者是否“理解”泛型无关的常见行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句