Вход на сайт
Пустой виртуальный метод вместо интерфейса
1779 просмотров
Перейти к просмотру всей ветки
в ответ Программист 09.10.24 09:14, Последний раз изменено 09.10.24 10:05 (alex445)
Есть правда еще protected internal и private protected, но эти ограничения я в реальной жизни еще не встречал :)
Надо бы кандидатов на собесах погонять. Чтобы не расслаблялись. ))
Проблема лишь в том, что если передать объект Presenter как IPresenter, то свойство DisplayName нельзя будет установить.
Ну это можно решить двумя интерфейсами:
public interface IPresenter { public string DisplayName { get; } } public interface IPresenterExt { public string DisplayName { get; set; } } public class Presenter : IPresenter, IPresenterExt { public string DisplayName { get; protected set; } }
Не работает (9 версия языка)
И так тоже не работает, с той же ошибкой
А в таком варианте вообще странность - мало того, что позволили сделать сеттер защищённым в интерфейсе, так ещё и несовместимость ввели - в 10 версии можно, в 9 нельзя. Если уж дошли до несовместимости сверху вниз, то не пора бы взяться за удаление устаревших вещей, чтобы язык и фреймворк не замусоривался?