【发布时间】:2008-11-21 08:09:36
【问题描述】:
在查看我们的代码库时,我发现了一个类似于以下模式的继承结构:
interface IBase
{
void Method1();
void Method2();
}
interface IInterface2 : IBase
{
void Method3();
}
class Class1 : IInterface2
{
...
}
class Class2 : IInterface2
{
...
}
class Class3 : IInterface2
{
...
}
在Class2,Method1 抛出NotImplementedException。
问题:
- 您一般如何看待继承接口?
-
IBase和Class2之间的关系是否违反里氏替换原则?
【问题讨论】:
-
也许 IInterfaces 应该扩展/实现 IBase...
-
...对于编辑后的版本,也许您可能会丢失 Class1 和 Class3,因为它们与 Class2 相同。
标签: c# oop inheritance liskov-substitution-principle