根据MSDN,ArrayList.Adapter(IList)
执行以下操作:
适配器不会复制IList的内容。相反,它只会创造 IList的一个ArrayList包装器;因此,改变了IList 也会影响ArrayList。
是否存在需要ArrayList
并返回通用IList<T>
包装器的反向操作?即返回IList<T>
的方法,以便在ArrayList
更改时源IList<T>
也会更新?
e.g。
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
答案 0 :(得分:2)
好吧,因为ArrayList实现了IList,从技术上讲,这也解决了反向问题,因为对于这个方法,你可以传递一个ArrayList,它返回一个IList的子类(除非你真的想要找回一个通用的IList)。 / p>
编辑:由于您想要的实际上是IList,您可以使用继承来创建ArrayList的子类并编写所需的方法。问题是在ArrayList的子类中,你仍然需要一个备份你正在返回的IList对象的具体类,否则无法向两个列表添加对象。