Написав еще один вопрос для SO, я пришел к шаблону, который я использую очень часто, и я никогда не задумывался о нем. Но теперь я не уверен, что это правильный путь:Хорошая практика - вернуть IEnumerable <T> для коллекции, которая реализует INotifyCollectionChanged
Если у меня есть коллекции, с которыми мои WPF-элементы управления свяжутся, я почти всегда возвращал IEnumerable<SomeType>
. Однако внутренне это в большинстве случаев ReadOnlyObservableCollection<SomeType>
. У меня никогда не было проблем с этим, и все элементы управления потреблением всегда обновлялись правильно, что не удивительно, потому что они проверяют интерфейс INotifyCollectionChanged
.
Но мой вопрос сейчас, если это плохая практика, объявить в подписи только IEnumerable<SomeType>
, но вернуть (и также зависеть) нечто гораздо более мощное (INotifyCollectionChanged
).
Update:
Я пытаюсь уточнить:
Моя главная цель заключается вернуть IEnumerable<SomeType>
. Но большую часть времени возвращенный IEnumerable<SomeType>
реализует также INotifyCollectionChanged
, такой как ReadOnlyObservableCollection<SomeType>
. Элементы управления потреблением связаны соответственно (каково мое второе намерение).
Возможно, я должен был спросить: есть ли интерфейс, который точно содержит IEnumerable и INotifyPropertyChanged.
Я понятия не имею, что вы говорите. Некоторый пример кода, чтобы показать шаблон, на который вы ссылаетесь, был бы полезен. –
Я хорошо понял вопрос. Я часто делаю то же самое со списком <>. – Marcel
Очень поздно, но я делал это много лет, но сегодня наткнулся на случай, когда он сломал его: - У меня есть свойство, объявленное как IEnumerable, при поддержке ObservableCollection . Странно, связанный элемент управления (сетка данных) не замечает, когда элементы добавляются в коллекцию, поэтому, по-видимому, они не получают уведомления. –