Почему в .NET Framework нет ObservableKeyedCollection ?
-
24-09-2019 - |
Вопрос
.NET Framework, начиная с версии 3.0, содержит ObservableCollection
Хорошо, я мог бы реализовать свою собственную коллекцию, производя от KeyedCollection
Решение
Причина отсутствия ObservableKeyedCollection (или любого другого такого типа, который является просто комбинацией других универсальных типов) заключается в том, что ObservableCollection является общим, и это делает реализацию ObservableKeyedCollection такой же простой, как это:
родовое словоХотя это, конечно, не однострочная программа, по большей части это шаблон. Что наиболее важно, он не реализует повторно ObservableCollection , как вы предлагали; вместо этого он полностью использует его.
Причина, по которой это «не может быть хорошим дополнением к .NET Framework», заключается в том, что когда уже есть один способ сделать что-то, создание другого способа сделать это - плохая идея. Чем меньше способов выполнить какую-то конкретную задачу, тем меньше способов сделать ее плохо. 8)
Инструменты предоставлены, теперь все зависит от того, как вы их используете.
Надеюсь, это поможет!
Другие советы
Взгляните на Реализация класса ObservableKeyedCollection .Это довольно просто.
Я бы порекомендовал вам взглянуть на C5 .Это замечательная универсальная библиотека коллекций, которая предлагает наблюдаемые коллекции в качестве стандарта для всех своих коллекций, включая Added
, Inserted
, Removed
, RemovedAt
, Cleared
и Changed
.Кроме того, все коллекции C5 поддерживают идеал «программирования для интерфейса».Все интерфейсы предоставляют полную функциональность базовых реализаций, которых не хватает в пространстве имен System.Collections.Generic
.Кроме того, имеется подробная документация .Я настоятельно рекомендую вам проверить это.