【发布时间】:2012-05-22 07:40:03
【问题描述】:
我正在尝试基于Stack<T> 创建一个自定义集合。当我在 Visual Studio 中查看Stack<T> [来自元数据] 时,它显示Stack<T> 实现了ICollection,这将要求它实现ICollection 的CopyTo(Array array, index) 方法,但相反,它显示为具有ICollection<T> 的 CopyTo(T[] array, index) 方法。有人可以解释为什么会这样吗?
我正在尝试创建一个非常模仿Stack<T> 的集合。当我像堆栈一样实现ICollection 时,它需要我使用CopyTo(Array array, index) 方法,但我真正想要的是使用CopyTo(T[] array, index) 方法,就像Stack<T> 一样。有没有办法在不实现ICollection<T> 的情况下实现这一目标?
【问题讨论】:
-
方法是显式实现的。显式实现的方法不是公共的,因此不会显示在元数据中(仅列出公共属性)。
-
你可以试试 .NET Reflector 看看
Stack<T>的实际完整源代码,包括私有方法。 -
发布了 Stack
的 .NET 4.0 实现,如果您想看看的话。 pastebin.com/p2k4URtU -
@JeffMercado 您可能应该将其发布为答案,并简要说明如何显式实现接口以便获得荣誉。
-
@MarcinJuraszek - 从 VS 中下载框架源代码已经存在了一段时间。看看这篇文章:blogs.msdn.com/b/rscc/archive/2010/08/16/…
标签: .net stack generic-collections interface-implementation