Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测.NET集合或列表中的更改_C#_.net - Fatal编程技术网

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是查找所有更改还是仅查找集合级别更改。。。跟踪更改很难:)