Cha*_*s W 4 c# extension-methods observablecollection mvvm inotifypropertychanged
我正在为ObservableCollection编写一个扩展方法,并且已经读过.Add函数每次调用会引发3个属性更改事件,
所以这样的事情是个坏主意:
public static void AddRange<T>(this ObservableCollection<T> oc, IEnumerable<T> collection)
{
    if (collection == null) { throw new ArgumentNullException("collection"); }
    foreach (var i in collection) { oc.Add(i); }
}
还有其他解决方案吗?
鉴于这Concat<T>是一种扩展方法,它几乎肯定只是.Add()在封面下调用,它不具备该类的内部知识.你可以使用ildasm.exe来查看肯定会发生什么.
ObervableCollection<T>几年前,我针对这种情况遇到了性能问题.我最终得出的解决方案是实现IList<T>并INotifyCollectionChanged使用自定义实现,该实现支持使用实际集合增量(而不是每项事件)来响应调用来引发单个CollectionChanged事件AddRange<T>.查看NotifyCollectionChangedEventArgs的文档以获取详细信息.
| 归档时间: | 
 | 
| 查看次数: | 19741 次 | 
| 最近记录: |