随意装备你的枪支并瞄准,但我想了解为什么你不应该这样做。
我创建了一个自定义类,旨在替换任何List实例(我用它来更新它们背后的XML对象):
public class ListwAddRemove<T> : List<T> {
public event EventHandler<ListModifyEventArgs> OnAdd;
public event EventHandler<ListModifyEventArgs> OnRemove;
new public void Add(T o) {
base.Add(o);
if (OnAdd != null) {
OnAdd(this, new ListModifyEventArgs(o));
}
}
new public void Remove(T o) {
base.Remove(o);
if (OnRemove != null) {
OnRemove(this, new ListModifyEventArgs(o));
}
}
}
这个想法是,每当我向这个列表中添加或删除一个项目时,我的绑定事件就会触发,我可以自动处理背后的XML。
到目前为止,这个方法非常好用,效果很好。
但是,如何处理对象.ToList()和我的派生版本之间的转换呢?
许多人都说你应该从Collection中派生...为什么呢?
new
修饰符来隐藏基类成员从来不是一个好主意。如果你真的想从List<>
派生,给你的方法一些新名称,比如AddAndRaiseEvent
或类似的名称。然而,List<>
类并不是为这种用途而设计的。还有其他类提供更多的virtual
成员,旨在在继承它们时提供帮助。 - Jeppe Stig NielsenINotifyCollectionChanged
和INotifyPropertyChanged
接口的集合。请参阅 https://dev59.com/O2855IYBdhLWcg3wilCD 以获取更多信息。 - user692942