Вход на сайт
Пустой виртуальный метод вместо интерфейса
1779 просмотров
Перейти к просмотру всей ветки
в ответ Программист 08.10.24 17:35
Немного другой вопрос. Заметил, что раз в интерфейсе все члены должны быть публичными, то это требование публичности распространяется и на их имплементацию в классах. А если мне надо имплементацию сделать непубличной? Пока только такой хак хашёл
public interface IPresenter { public string DisplayName { get; } } public class Presenter : IPresenter { public string DisplayName { get; protected set; }
Т.е. в интерфейсе не объявляем геттер, тогда в имплементации можно его сделать с каким угодно уровнем доступа. Проблема лишь в том, что если передать объект Presenter как IPresenter, то свойство DisplayName нельзя будет установить.
Что за дурацкие ограничения? А если я хочу и сеттер ещё вдобавок сделать непубличным?
Понятно, что интерфейсы они типа по природе должны быть публичными, но если я хочу ограничить действия некоторых из них в пределах одной иерархии классов?