日期:2014-05-18  浏览次数:20715 次

为什么会在基类及其子类的定义中实现同一个接口
拿最常用的List<T>来说吧,可以看到List<T>的定义为
C# code

 public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
 {
 }



看到它实现了一大堆的接口,如果你再看下IEnumerable<T>的定义,会发现IEnumerable<T>也继承了ICollection<T>, 那么为何微软在定义List<T>的时候还需要再多写一个ICollection<T>呢?

除了这个例子外,还有很多项目中也见过类似的,比如在asp.net mvc的一个教程中http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

上面的链接中可以看到作者先定义了一个接口IStudentRepository ,继承自IDisposable, 然后在写了个类来实现这个IStudentRepository, 但除了实现该接口外,还实现了IDisposable, 请问这是不是多此一举?

对此,我一直不理解,向大家请教!

------解决方案--------------------
其实就是为了让使用者可以看得清楚,不然的话你需要一路向上找基类才能找到所有继承的接口,功能仅此而已。
------解决方案--------------------
以前和阿非学到的,这里也转给你
http://topic.csdn.net/u/20111014/12/f62f7f56-c020-4eab-a975-19b64230d318.html
------解决方案--------------------
探讨
比如所你定义了类a,它实现了接口Ix,然后你定义类b从a继承,那么显然,b的对象实例也实现了Ix。