我正在寻找涵盖以下要求的原生或自定义类型:
HashSet<T>
INotifyCollectionChanged
IENumerable<T>
(duh)并且必须由ReadOnlyCollection<T>
(duh,duh)包装UniqueList<T>
(如列表,而不是键/值对)这样做的主要目的是在相关对象之间建立一个小的网格/网络。 因此,这个网络只能是唯一的对象,并且必须有一种机制,当集合中的更改发生时通知应用程序。因为它是用于概念验证,所以范围纯粹在程序集内(没有db或fs是任何重要性)。
什么是适当的原生类型,或者创建复合的最佳成分是什么?
答案 0 :(得分:3)
听起来你可以非常轻松地将HashSet<T>
包裹在你自己的类型中,只是为了实现INotifyCollectionChanged
。您可以轻松代理所需的一切 - 例如GetEnumerator
可以调用set.GetEnumerator()
等。实现INotifyCollectionChanged
只需要在添加或删除元素时引发事件。如果添加已存在的元素或删除不是已存在的元素,您可能希望确保不引发事件。 HashSet<T>.Add/Remove
bool
都会返回UniqueList<T>
来帮助您解决此问题。
我不会将其称为ObservableSet<T>
,因为这表明类似列表的行为,例如维护排序。我称之为{{1}}或类似的东西。