Как я могу определить добавление в общий список в C # 4.0?

У меня есть подкласс List под названием LocationList ]. Это удобный способ добавить другие свойства (например, IsExpanded и такие, которые мы можем использовать в пользовательском интерфейсе. Достаточно хорошо. Но теперь мы хотим, чтобы каждое местоположение знало о своем родителе. Таким образом, мы должны получать уведомления, когда что-то добавляется в LocationList, но вы не можете переопределить Добавить и Удалить . Хотя мы можем использовать ObservableCollection,это больше похоже на конструкцию View / ViewModel. Это чистые данные модели.

Конечно, мы могли бы вручную установить родителя при добавлении его в коллекцию, но я ненавижу такую ​​неавтоматизированную логику, поскольку нет ничего, что могло бы обеспечить ее правильное выполнение. Позволить коллекции (ну, List) автоматически сказать: «Эй ... вас добавляют, поэтому я назначу вашего родителя классу, который владеет мной». Это то, что мне нужно.

Моя мысль состоит в том, чтобы вместо подкласса List , чтобы вместо этого просто создать простой класс, который использует внутри List , а затем я могу просто предоставить свои собственные методы добавления / удаления и обработать внесены изменения в 'Parent'. Однако это нарушает возможность перечисления внутренней коллекции, поскольку она находится внутри.

Тем не менее, есть ли способ прослушать изменения в List или, по крайней мере, делегировать его интерфейс IEnumerable из обернутого объекта в его оболочку?

8
задан MarqueIV 7 July 2011 в 13:06
поделиться