【问题标题】:Generic collections & dictionary classes with events带有事件的通用集合和字典类
【发布时间】:2025-12-06 05:40:01
【问题描述】:

实现 Document-View 模式我遇到了问题:标准通用集合和字典(例如List<T>HashSet<T>)不提供修改事件(OnBeforeAdd、OnAfterAdd、OnRemove、冻结/解冻方法...)

我认为事件不是为了优化目的而实现的,但我必须使用 Document 类来使用和侦听此类事件。

我在 Inet 上搜索了一段时间,发现了一些列表的演示实现。是否有知名的生产证明库具有完整的可事件通用集合/字典,或者我应该自己实现这些集合?

提前感谢您!

【问题讨论】:

    标签: .net language-agnostic generics collections


    【解决方案1】:

    你考虑过System.Collections.ObjectModel.ObservableCollection<T>吗?

    来自 MSDN:

    表示一个动态数据集合,在添加、删除项目或刷新整个列表时提供通知。

    我看到这种类型的集合在 WPF 和 Silverlight 中被大量使用,因为它能够在集合中的数据发生变化时引发事件。这允许丰富的数据绑定,其中 UI 根据ObservableCollection<T> 引发的事件进行更新。

    【讨论】:

    • 感谢您的回复。很遗憾,但是这个集合没有“free/unfreeze”方法。我的意思是如果我必须添加 1'000 个元素并且只接收一个最终事件 (collectionChanged) 而不是 1'000 个事件,我必须自己实现它。
    • @Andrew 我对两件事感到困惑:1)当你说“这个集合”时,你指的是ObservableCollection还是别的什么? 2)“免费/解冻”方法是什么意思?我想我想知道ObservableCollection 缺少什么,因此它不符合您的需求。
    【解决方案2】:

    您可以将容器包装到您自己的类中并向该类添加事件。

    【讨论】:

    最近更新 更多