Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Пустой виртуальный метод вместо интерфейса

09.10.24 09:57
Re: Пустой виртуальный метод вместо интерфейса
 
alex445 патриот
в ответ Программист 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 нельзя. Если уж дошли до несовместимости сверху вниз, то не пора бы взяться за удаление устаревших вещей, чтобы язык и фреймворк не замусоривался?


 

Перейти на