C# 检测.NET集合或列表中的更改
我有一个包含属性和集合的类。它还有一个名为C# 检测.NET集合或列表中的更改,c#,.net,C#,.net,我有一个包含属性和集合的类。它还有一个名为Dirty的属性。如果此类实例的状态以任何方式发生更改,我想设置此Dirty标志 显然,对于属性,我可以在setter中设置它。然而,我不确定检测收藏变化的最佳方法。虽然我可以创建自己的集合类,该集合类派生自.NET集合类,并且可以这样做,但我想知道是否还有其他方法不需要我自己的自定义集合类型 澄清更新 我只是想澄清一下,我不需要以嵌套的方式跟踪—我只是想知道是否已从集合中添加/删除了项目。通过编辑,这将是一个很好的选择。它实现了,因此无论何时添加或删除
Dirty
的属性。如果此类实例的状态以任何方式发生更改,我想设置此Dirty
标志
显然,对于属性,我可以在setter中设置它。然而,我不确定检测收藏变化的最佳方法。虽然我可以创建自己的集合类,该集合类派生自.NET集合类,并且可以这样做,但我想知道是否还有其他方法不需要我自己的自定义集合类型
澄清更新
我只是想澄清一下,我不需要以嵌套的方式跟踪—我只是想知道是否已从集合中添加/删除了项目。通过编辑,这将是一个很好的选择。它实现了,因此无论何时添加或删除项,它都会引发一个事件
请注意,在WPF中,此类始终用于该确切目的,因此框架可以侦听该事件,并根据需要添加/删除UI元素。请查看哪个包含CollectionChanged
事件
但是,请注意,
ObservableCollection
s不是线程安全的,尽管有一些教程/文章/项目介绍如何实现这样的功能-不完全匹配,但可能会这样做?仅供参考,ObservableCollection只观察到集合中的项(引用)已更改,不是嵌套的属性。@AlexeiLevenkov,它只查看项,而不是带有“…不需要我自己的自定义集合类型”的属性。您现在使用的是哪种集合类型,可以接受哪些替换?任何内置类型都可以吗?@DanielA.White-sure-不清楚OP是查找所有更改还是仅查找集合级别更改。。。跟踪更改很难:)