Есть ли обратное для ArrayList.Adapter (IList)? - PullRequest
0 голосов
/ 14 ноября 2011

Согласно MSDN, ArrayList.Adapter(IList) выполняет следующие действия:

Адаптер не копирует содержимое IList.Вместо этого он создает оболочку ArrayList только вокруг IList;поэтому изменения в IList также влияют на ArrayList.

Существует ли обратная операция, которая принимает ArrayList и возвращает универсальную оболочку IList<T>?т.е. метод, который возвращает IList<T> таким образом, что источник ArrayList также обновляется при изменении IList<T>?

например,

ArrayList foo = new ArrayList();

foo.Add(new Bar());
foo.Add(new Bar());

IList<Bar> foobar = foo.GenericAdapterMethod(); // insert the method I'm looking for here
foobar.Add(new Bar());

Console.WriteLine(foo.Count); // this should return 3

1 Ответ

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

Что ж, поскольку ArrayList реализует IList, технически это также решает обратную проблему, поскольку этому методу вы можете передать ArrayList и он возвращает подкласс IList (если, конечно, вы действительно не хотите вернуть общий IList).1001 *

Редактировать : Так как вы на самом деле хотите IList, вы можете использовать наследование для создания подкласса ArrayList и написать нужный вам метод.Проблема заключается в том, что внутри подкласса ArrayList вам все еще нужно иметь конкретный класс, резервирующий возвращаемый вами объект IList, иначе нет способа добавить объекты в оба списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...