我正在研究Microsoft Docs上的UOW模式并看到以下代码
interface IStudentRepository: IDisposable
{
void SomeMethod();
}
// Interface Implementaion
class StudentRepository: IStudentRepository, IDisposable
{
public void SomeMethod(){}
public void Dispose(){}
}
现在我的问题是为什么我们在实现派生接口的类上重新实现派生接口的父接口?例如,IStudentRepository接口派生自IDisposable接口,但是当我们在StudentRepository类上实现IStudentRepository接口时,除了IStudentRepository接口之外,我们还实现了IDisposable。
注意:我已经尝试过这段代码而没有重新实现IDisposable并且尝试了后退和前进;一切正常,因为它与重新实施一起工作。
答案 0 :(得分:3)
没有必要这样做:
class StudentRepository: IStudentRepository, IDisposable { }
只需写下:
class StudentRepository: IStudentRepository { }
如果您在 Resharper 中查看此内容,它会告诉您再次声明IDisposable
是多余的。
答案 1 :(得分:3)
在实现IDisposable
的类上指定IStudentRepository
是多余的。它完全没有效果。
答案 2 :(得分:1)
我可以想到这可能是一个好主意的几个原因:
using
块的焦点),那么每条信息都会有所帮助。正如你所发现的那样,虽然没有必要;如果从StudentRepository中删除IDisposable,由于IStudentRepository上的继承,该类仍然是IDisposable。
答案 3 :(得分:0)
我可以想到一个原因,那就是有意义的。
接口的客户端(StudentRepository)有一次性成员,它也想处理它。它重新实现了IDisposable接口,以防止IStudentRepository接口上未来的重大变化。换句话说,将来IStudentRepository可能不是IDisposable,客户端不需要进行任何更改。