我有很多嵌套列表的实体
例如,我有BaseEntity
,其中有List
我们正在使用一个WPF UI,我们需要跟踪BaseEntity
的每个列表中的所有更改。它是通过基于所需列表实例化一个新的ObservableCollection
,并绑定到该ObservableCollection
来实现的。
将所有这些嵌套的列表
更改为可观察集合
,有何利弊?因此,我们可以跟踪BaseEntity
本身中的所有更改,而无需将BaseEntity
的每个列表重新分配给已修改的绑定observetecollection
?
假设从未使用特定于列表的方法。
有趣的问题,考虑到List
和ViewableCollection
都实现了IList
其中一个主要的区别是观察团
没有addRange
方法,这可能会有一些影响。
此外,我不会在我知道我不会绑定到的地方使用ObservableCollection
,因此,检查您的设计并确保您在分离关注层时采用了正确的方法是很重要的。
至于集合之间的差异
这完全取决于你的意思:
我们需要跟踪BaseEntity的每个列表中的所有更改
跟踪列表中已有对象的更改是否足够?或者您是否需要知道对象何时从列表中删除/添加到列表中/更改列表中的位置?
如果一个列表将在其整个生命周期中包含相同的项,但是该列表中的单个对象将发生变化,那么仅对象就足以引发更改通知(通常通过INotifyProperty tyChanged
)和List
因此,尽管差异可能很有趣(之前的海报已经涵盖了这些差异),但通常情况下,您没有太多的选择—或者您需要observedcollection
List表示可以通过索引访问的对象的强类型列表。它提供了搜索、排序和操作列表的方法。List类是ArrayList类的泛型等价物。它使用一个数组实现IList通用接口,该数组的大小根据需要动态增加。
ObservableCollection是一种通用的动态数据收集,它使用接口“INotifyCollectionChanged”在添加、删除项或刷新整个收集时提供通知。
请在此链接中阅读更多信息:http://www.codeproject.com/Articles/42536/List-vs-ObservableCollection-vs-INotifyPropertyCha