2009-09-29 38 views
1

这可能是我在C#继承中忽略的东西,但我试图构建一个实现IList(System.Collections版本,而不是泛型)的类。编译器抱怨说我没有实现索引器,但我正在查看CollectionBase,它也实现了IList,并且它似乎也没有公开索引器。IList上的索引器

通过Reflector查看它似乎CollectionBase是抽象的,它确实是实现索引器,但它似乎是私有的。我试过这个也没有骰子,编译器坚持说如果我想实现IList,我必须有一个公共非静态的索引器,它返回一个对象。

所以我的问题不是为什么我需要一个,但那个CollectionBase如何获得一个私人索引器?

回答

2

它没有使用明确的接口实现:

object IList.this [int index] {get;组; }

它就在那里,你只是没有在默认的类接口上看到它(使用COM术语) - 你必须投给IList来查看/使用它。

+0

啊,好的,谢谢。我总是忘记显式继承。我有时会怀疑它是否仅仅为了避免多重继承而避免名称冲突。 – LoveMeSomeCode 2009-09-29 21:23:11