Подходит ли ObservableCollection <T>в сценариях без пользовательского интерфейса - PullRequest
3 голосов
/ 14 сентября 2011

Я не очень знаком с ObservableCollection, но его реализация, кажется, предоставляет мне удобный способ обновления пользовательского состояния коллекций на основе любой операции добавления / удаления / замены / очистки.

Однако примеры, на которые я смотрел, обычно ссылаются на них в контексте привязки данных WPF / WinForms.

Приносит ли это какие-либо нежелательные накладные расходы / зависимости, которых я должен опасаться, т.е. в моем сценарии (простое обновление расширенного состояния, которое я добавил в коллекцию на основе операций добавления / удаления и т. д.), было бы лучше просто реализовать коллекцию или подобное и обновить расширенное состояние путем переопределения каждой операции добавления / удаления / замены / очистки?

Ответы [ 3 ]

2 голосов
/ 14 сентября 2011

Причина, по которой ObservableCollection чаще всего ассоциируется с пользовательским интерфейсом, заключается в гибкости, которую она обеспечивает при обновлении представления, если вы используете шаблон MVVM. Сказав, что я не вижу причин, это должно помешать вам использовать его в не-пользовательском коде. Пожалуйста, обратитесь 1 для получения информации о производительности.

2 голосов
/ 14 сентября 2011

С этой коллекцией нет сильной зависимости, если вы хотите использовать ее вне приложения WPF / WinForms. Он просто реализует удобный интерфейс.

0 голосов
/ 14 сентября 2011

Даже если ObservableCollection была введена в платформу в версии 3.0, которая также представила WPF, она не имеет прочной связи с концепциями пользовательского интерфейса.Также, если вы прочитали документацию MSDN , описание типа никак не относится к контексту пользовательского интерфейса:

Представляет динамический сбор данных, который предоставляет уведомления при добавлении элементов, удален или когда весь список обновляется.

Дело в том, что он просто хорошо подходит для сценариев пользовательского интерфейса, поскольку уже реализует INotifiyPropertyChanged.Поэтому, чтобы ответить на ваш вопрос, да, это вполне нормально, используя ObservableCollection в сценариях, не связанных с пользовательским интерфейсом.

...