У меня есть определения этого класса / интерфейса в C #
public class FooBase {
...
protected bool Bar() { ... }
...
}
public interface IBar {
bool Bar();
}
Теперь я хочу создать класс Foo1, производный от FooBase, реализующий IBar:
public class Foo1 : FooBase, IBar {
}
Есть ли какая-то магия объявления класса, что компилятор принимает унаследованный защищенный метод как общедоступную реализацию интерфейса?
Конечно, метод Foo1
bool IBar.Bar()
{
return base.Bar();
}
работает. Мне просто интересно, есть ли ярлык;)
Пропуск этого метода приводит к ошибке компилятора: Foo1 не реализует интерфейсный элемент IBar.Bar (). FooBase.Bar () является статическим, не общедоступным или имеет неправильный тип возвращаемого значения.
Объяснение: Я разделяю наследование кода (иерархия классов) и реализацию функций (интерфейсы). Таким образом, для классов, реализующих один и тот же интерфейс, доступ к общему (унаследованному) коду очень удобен.