C# ArrayList.Adapter(IList)有相反的版本吗?

C# ArrayList.Adapter(IList)有相反的版本吗?,c#,generics,arraylist,C#,Generics,Arraylist,根据MSDN,ArrayList.Adapter(IList)执行以下操作: 适配器不复制IList的内容。相反,它只会创造 围绕IList的ArrayList包装器;因此,对IList的更改 也会影响ArrayList 是否存在接受ArrayList并返回通用IList包装器的反向操作?i、 e.一种返回IList的方法,当IList更改时,源ArrayList也会更新 e、 g ArrayList foo=new ArrayList(); foo.Add(新条()); foo.Add(新条(

根据MSDN,
ArrayList.Adapter(IList)
执行以下操作:

适配器不复制IList的内容。相反,它只会创造 围绕IList的ArrayList包装器;因此,对IList的更改 也会影响ArrayList

是否存在接受
ArrayList
并返回通用
IList
包装器的反向操作?i、 e.一种返回
IList
的方法,当
IList
更改时,源
ArrayList
也会更新

e、 g

ArrayList foo=new ArrayList();
foo.Add(新条());
foo.Add(新条());
IList foobar=foo.genericaptermethod();//在这里插入我要查找的方法
添加(新条());
Console.WriteLine(foo.Count);//这应该返回3

由于ArrayList实现了IList,从技术上讲,这也解决了相反的问题,因为对于这个方法,您可以传递一个ArrayList,它返回一个IList的子类(当然,除非您真的想要返回一个通用IList)


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

您是否知道,
ArrayList
不应在.NET 1.1之后使用?如果需要任意对象的列表,请使用
list
,否则请使用
list
,其中
T
是列表中对象的类型,或者使用其他泛型集合之一。您应该研究使用泛型类而不是
ArrayList
。(你的问题标有“泛型”,但问题中没有使用泛型的内容。)是的,我知道泛型是一条出路。我打算在4.0 facade中封装一个我没有源代码的1.1库。所以我恐怕没有太多的选择了。@Guffa哦,是的,编辑了这个问题来说明我真正的意思。我需要一个IList包装器,它实际上可以将修改代理回源ArrayList。@Jeremy:框架中没有这样的包装器,因为这本身就是无效的。如果你找不到已经这样做过的人,你必须自己写。是的,我希望有一个通用的IList。我将对问题进行编辑以说明这一点。对不起,已经过了午夜了,我没想到第一次就听到了。
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