Я знаю, что вопрос запутан, но трудно подумать о хорошем заголовке для этой проблемы, поэтому я опишу здесь еще раз.C# Есть ли способ, которым мой базовый класс и производный класс могут реализовывать интерфейсные методы отдельно?
У меня есть интерфейс А с 2-мя методами, IsValidRow()
и IsFileValid()
у меня есть базовый класс B и производный класс С Цель здесь состоит в том, что я хочу, это базовый класс для реализации IsFileValid()
, поэтому он может быть унаследован всеми классы, полученные из базового класса и каждого производного класса для реализации IsValidRow()
.
Проблема в том, что IsFileValid()
звонки IsValidRow()
внутри. Если я
B:A
IsValidRow()
требует, чтобы быть реализован в В.
В настоящее время мой производный класс C наследует от базового класса и интерфейса атм.
Я не возражаю против реструктуризации всего, пока выполняются требования к двум методам (один будет реализован один раз в базовом классе или что-то еще и наследует, а другой будет реализован в каждом производном классе)
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', я не думаю, что он должен предоставить реализацию для всех методов, даже если они приходят от интерфейса. –