這不是一個問題,更多的東西讓我覺得奇怪:ObservableCollection
類是通用的,但是在更改爲集合時引發的CollectionChanged
事件不是。這意味着在事件處理程序中,您必須將您從事件參數對象獲得的集合中的所有對象都轉換爲適當的項目類型。C#:ObservableCollection - 爲什麼沒有通用的「CollectionChanged」事件?
但是,不應該簡單地將該事件設置爲通用的嗎?喜歡的東西
public virtual event NotifyCollectionChangedEventHandler<T> CollectionChanged;
與
public delegate void NotifyCollectionChangedEventHandler(object sender, NotifyCollectionChangedEventArgs<T> e);
然後
public class NotifyCollectionChangedEventArgs<T> {
// ...
public IList<T> NewItems { get; }
public IList<T> OldItems { get; }
畢竟,類型參數T
由有關ObservableCollection
的聲明,這意味着你永遠不應該已經確定無論如何都可以將任何類型不是T
(或兼容)的對象添加到集合中。因此,所有這些應該是完全類型安全的,並且節省我們不得不將事件處理程序內的對象轉換爲我們知道它們應該擁有的任何類型的麻煩。
有沒有理由不這樣做,我失蹤了?即這是一個有意識的設計desicion,或者只是一個疏忽?
如果我記得沒錯(但我很可能是錯的),這與WPF有關,它無法使用泛型,但需要知道如何聽集合更改(ObservableCollection是爲了WPF而引入的基本上這是有道理的) – Polity 2012-02-21 13:19:43