为什么INotifyCollectionChanged不是通用的?
本文关键字:INotifyCollectionChanged 为什么 | 更新日期: 2023-09-27 18:13:10
如果我创建一个新的ObservableCollection<T>
和一个CollectionChanged
侦听器,如下所示:
var c = new ObservableCollection<MyType>();
c.CollectionChanged += new NotifyCollectionChangedEventHandler(h);
...
void h(object sender, NotifyCollectionChangedEventArgs e)
{
IList newItems = e.NewItems;
// non generic IList! :(
}
为什么不是e.NewItems
和IList<MyType>
?
ObservableCollection
是为了支持WPF这样的平台上的数据绑定场景而设计的,在这些平台上,数据绑定控件并不关心它们绑定到的集合的类型。让通知通用化只会让编写控件变得更加困难,而不会带来任何好处。
大概是为了它可以用于非泛型集合以及ObservableCollection<T>