2013-06-29 55 views
0

我有一個自定義類型,知道如何與其他人(它實現IComparable)進行比較,它工作很好存儲在一個ObservableList內。自定義集合,可觀察自我排序,防止插入等

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

  1. 檢測重複並防止插入。
  2. 在每次成功插入時自動排序。
  3. 是可觀察的&
  4. 如果插入的批次項目只有在插入批次爲 時纔會通知。

我想提示如何使這樣一個集合,我將需要研究/實現等我不尋找代碼,但如果你可以給它的獎金。

我曾想過這樣做的:

從繼承的ObservableCollection,重寫add方法,檢查是否項目已經存在,如果它忽略它。

實現我自己的可觀察集合基於一個更通用的類型,如列表。

+1

「ObservableCollection」與「List」一樣「通用」。沒有理由不使用它,如果你想讓你的集合實現'INotifyCollectionChanged'。我認爲你應該不斷髮展你的第一個想法。 –

回答

0

既然你想防止重複的插入,你想排序,SortedSet可能是一個很好的起點。由於您需要通知,因此您必須擴展標準SortedSet並實施INotifyCollectionChangedINotifyPropertyChanged。有一個例子here和另一個here,它使用HashSet來代替(它是無序的,但您可以很容易地用SortedSet來替換)。

另一種方法也是一樣有效的,那就是與您一起提出第一個建議並擴展ObservableCollection