ArrayList.Adapter(IList)有反转吗?

时间:2011-11-14 17:19:31

标签: c# generics arraylist

根据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

1 个答案:

答案 0 :(得分:2)

好吧,因为ArrayList实现了IList,从技术上讲,这也解决了反向问题,因为对于这个方法,你可以传递一个ArrayList,它返回一个IList的子类(除非你真的想要找回一个通用的IList)。 / p>

编辑:由于您想要的实际上是IList,您可以使用继承来创建ArrayList的子类并编写所需的方法。问题是在ArrayList的子类中,你仍然需要一个备份你正在返回的IList对象的具体类,否则无法向两个列表添加对象。