【发布时间】:2016-07-08 14:51:02
【问题描述】:
我知道这个问题令人困惑,但很难为这个问题想出一个好的标题,所以我会在这里描述更多。
我有一个接口 A 有 2 个方法,IsValidRow() 和 IsFileValid()
我有一个基类 B 和一个派生类 C
这里的目标是我希望基类实现IsFileValid(),所以它可以被从基类派生的所有类继承,并且每个派生类都可以实现IsValidRow()。
问题是IsFileValid() 在内部调用IsValidRow()。如果我这样做了
B:A
A 需要在 B 中实现 IsValidRow()。
目前我的派生类 C 继承自基类和接口 atm。
只要满足这两种方法的要求,我不介意重组一切(一种将在基类或其他东西中实现一次并继承,而另一种将在每个派生类中实现)
interface IFileValidator
{
Pair<bool, string> IsValidRow(List<string> row);
bool IsFileValid(string file);
}
class FileValidator : IFileValidator
{
public bool IsFileValid(string file)
{
// calls IsValidRow()
IsValidRow();
}
}
class FacilitiesCalendarValidator : FileValidator, IFileValidator
{
public Pair<bool, string> IsValidRow(List<string> row)
{
//stuff
}
}
【问题讨论】:
-
如果
B被声明为abstract,我认为它不必为所有方法提供实现,即使它们来自接口。
标签: c# class inheritance