我有一个包含对象列表的类.修改列表时,在类中运行某些代码的最佳方法是什么?
class MyManagerClass { ArrayList list = new ArrayList(); // will likely be a different collection class private OnItemAddedToList(object o) { // how to call this? } private OnItemRemovedFromList(object o) { // how to call this? } }
Rune Grimsta.. 5
如果您正在编写自定义集合,则可以实现INotifyCollectionChanged
或INotifyPropertyChanged
接口.它们添加了您可以订阅的事件,以便在以某种方式更改集合数据时通知侦听器.
这样做,您可以订阅集合外部代码中的事件.
或者,您可以使用ObservableCollection
实现这两个接口的类.这两个INotifyCollectionChanged
界面ObservableCollection
仅在.Net Framework 3.0及更高版本中可用.
在.Net Framework 2.0上,您可以使用该IBindingList
接口来获得相同的功能,但实现起来比INotifyCollectionChanged
3.0中的接口更复杂
如果您正在编写自定义集合,则可以实现INotifyCollectionChanged
或INotifyPropertyChanged
接口.它们添加了您可以订阅的事件,以便在以某种方式更改集合数据时通知侦听器.
这样做,您可以订阅集合外部代码中的事件.
或者,您可以使用ObservableCollection
实现这两个接口的类.这两个INotifyCollectionChanged
界面ObservableCollection
仅在.Net Framework 3.0及更高版本中可用.
在.Net Framework 2.0上,您可以使用该IBindingList
接口来获得相同的功能,但实现起来比INotifyCollectionChanged
3.0中的接口更复杂