Звучит так, как если бы вы могли просто обернуть HashSet<T>
в свой собственный тип, просто реализовать INotifyCollectionChanged
.Вы можете легко проксировать все, что вам нужно - например, GetEnumerator
может просто позвонить set.GetEnumerator()
и т. Д. Реализация INotifyCollectionChanged
должна быть просто вопросом вызова события, когда элемент добавляется или удаляется.Вы, вероятно, захотите убедиться, что не вызываете событие, если либо добавляете элемент, который уже присутствует, либо удаляете элемент, который не уже присутствует.HashSet<T>.Add/Remove
оба возвращают bool
, чтобы помочь вам с этим, хотя.
Я не будет называть его UniqueList<T>
, поскольку это предполагает поведение, подобное списку, например поддержание порядка.Я бы назвал это ObservableSet<T>
или что-то в этом роде.