Есть ли версия List, в которой есть события Add и Remove? - PullRequest
8 голосов
/ 04 января 2010

Мне нужна коллекция .net, в которой есть события Add и Remove. Есть ли готовая версия, которая имеет это?

Например, я бы обновил некоторый внутренний счетчик, когда пользователь добавляет элемент в список через событие. (Не совсем то, что я планирую сделать.)

Ответы [ 5 ]

14 голосов
/ 04 января 2010

Попробуйте ObservableCollection<T> он поддерживает INotifyCollectionChanged, который предоставляет события для каждого аспекта изменения коллекции.

Пространство имен: System.Collections.ObjectModel

Сборка: WindowsBase.dll

7 голосов
/ 04 января 2010

ObservableCollection настолько близко, насколько вы получите в рамках.

OTOH, это не так сложно сделать.Просто создайте класс, который реализует IList и оборачивает внутренний экземпляр List .Вы можете просто бросить свои события по мере необходимости.

1 голос
/ 04 января 2010

Вы всегда можете сделать приватное List<...> и затем получить доступ через метод:

private List<string> listOfStrings = new List<string>;

public void AddToList(string s)
{
    // Do your work
    listOfStrings.Add(s);
}

или вы можете перегрузить его и добавить события по своему желанию.

0 голосов
/ 04 января 2010

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

0 голосов
/ 04 января 2010

Вы также можете написать специальную облегченную оболочку, если хотите оптимизировать скорость за счет гибкости.

...