Вопрос

.NET Framework, начиная с версии 3.0, содержит ObservableCollection , но почему нет ObservableKeyedCollection .

Хорошо, я мог бы реализовать свою собственную коллекцию, производя от KeyedCollection и реализация INotifyCollectionChanged интерфейс, но это не будет хорошим дополнением к .NET Framework.

Это было полезно?

Решение

Причина отсутствия ObservableKeyedCollection (или любого другого такого типа, который является просто комбинацией других универсальных типов) заключается в том, что ObservableCollection является общим, и это делает реализацию ObservableKeyedCollection такой же простой, как это:

родовое слово

Хотя это, конечно, не однострочная программа, по большей части это шаблон. Что наиболее важно, он не реализует повторно ObservableCollection , как вы предлагали; вместо этого он полностью использует его.

Причина, по которой это «не может быть хорошим дополнением к .NET Framework», заключается в том, что когда уже есть один способ сделать что-то, создание другого способа сделать это - плохая идея. Чем меньше способов выполнить какую-то конкретную задачу, тем меньше способов сделать ее плохо. 8)

Инструменты предоставлены, теперь все зависит от того, как вы их используете.

Надеюсь, это поможет!

Другие советы

Взгляните на Реализация класса ObservableKeyedCollection .Это довольно просто.

Я бы порекомендовал вам взглянуть на C5 .Это замечательная универсальная библиотека коллекций, которая предлагает наблюдаемые коллекции в качестве стандарта для всех своих коллекций, включая Added, Inserted, Removed, RemovedAt, Cleared и Changed.Кроме того, все коллекции C5 поддерживают идеал «программирования для интерфейса».Все интерфейсы предоставляют полную функциональность базовых реализаций, которых не хватает в пространстве имен System.Collections.Generic.Кроме того, имеется подробная документация .Я настоятельно рекомендую вам проверить это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top