2013-06-29 28 views
0

我有一个自定义类型,知道如何与其他人(它实现IComparable)进行比较,它工作很好存储在一个ObservableList内。自定义集合,可观察自我排序,防止插入等

但是收集中仍然存在一些缺陷。我需要4个功能。一个集合:

  1. 检测重复并防止插入。
  2. 在每次成功插入时自动排序。
  3. 是可观察的&
  4. 如果插入的批次项目只有在插入批次为 时才会通知。

我想提示如何使这样一个集合,我将需要研究/实现等我不寻找代码,但如果你可以给它的奖金。

我曾想过这样做的:

从继承的ObservableCollection,重写add方法,检查是否项目已经存在,如果它忽略它。

实现我自己的可观察集合基于一个更通用的类型,如列表。

+1

“ObservableCollection”与“List”一样“通用”。没有理由不使用它,如果你想让你的集合实现'INotifyCollectionChanged'。我认为你应该不断发展你的第一个想法。 –

回答

0

既然你想防止重复的插入,你想排序,SortedSet可能是一个很好的起点。由于您需要通知,因此您必须扩展标准SortedSet并实施INotifyCollectionChangedINotifyPropertyChanged。有一个例子here和另一个here,它使用HashSet来代替(它是无序的,但您可以很容易地用SortedSet来替换)。

另一种方法也是一样有效的,那就是与您一起提出第一个建议并扩展ObservableCollection