我有很多实体,每个实体都嵌套了List<>个.

例如,我有BaseEntity个,其中有List<ColumnEntity>个.

我们使用的是WPFUI,我们需要跟踪每个BaseEntity列表中的所有更改.它是通过基于所需列表实例化A new ObservableCollection并绑定到该ObservableCollection来实现的.

将所有这些嵌套的Lists更改为ObservableCollections有什么利弊?那么我们可以跟踪BaseEntity本身的所有更改,而无需将每个BaseEntity列表重新分配到修改的界限ObservableCollection

假设从未使用过特定于List的方法.

推荐答案

有趣的问题是,考虑到ListObservableCollection都实现了IList<T>,两者没有太大区别,ObservableCollection还实现了INotifyCollectionChanged接口,这允许WPF绑定到它.

其中一个主要区别是ObservableCollection没有AddRange方法,这可能有一些含义.

此外,我不会将ObservableCollection用于我知道我将不受约束的地方,因此,仔细判断您的设计并确保在分离关注层时采用正确的方法是很重要的.

至于Collection<T>List<T>之间的差异,你可以看看这里

.net相关问答推荐

找不到包Microsoft.VisualStudio.Azure.Containers.Tools.Targets

DI通过对象的接口而不是实际类型来解析服务

.NET Core 中的微服务

从删除项目时重新索引的列表中删除项目的最佳算法是什么?

查询 MongoDb 中嵌入式文档中的一个字段,该字段抛出调用运算符的左侧必须是对持久属性的直接访问

更改列表中的值

是否可以将 SandCastle 创建的两个页面合并到一个主页中?

如何使用 Moq 为不同的参数设置两次方法

为什么这个多态 C# 代码会打印它的功能?

在 .NET 中获取执行 exe 路径的最佳方法是什么?

为什么 .Contains 慢?通过主键获取多个实体的最有效方法?

我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快?

如何比较 C# 中的(目录)路径?

.NET 进程间通信的最佳 Select 是什么?

判断 .NET 中的目录和文件写入权限

错误 NU1605 检测到包降级

如何修改 KeyValuePair 值?

在 WPF 中设置 Tab 键顺序

在类型 c# 上切换大小写