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

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

08.10.24 19:27
Re: Пустой виртуальный метод вместо интерфейса
 
alex445 патриот

Немного другой вопрос. Заметил, что раз в интерфейсе все члены должны быть публичными, то это требование публичности распространяется и на их имплементацию в классах. А если мне надо имплементацию сделать непубличной? Пока только такой хак хашёл


public interface IPresenter
{
    public string DisplayName { get; }
}

public class Presenter : IPresenter
{
    public string DisplayName { get; protected set; }


Т.е. в интерфейсе не объявляем геттер, тогда в имплементации можно его сделать с каким угодно уровнем доступа. Проблема лишь в том, что если передать объект Presenter как IPresenter, то свойство DisplayName нельзя будет установить.


Что за дурацкие ограничения? А если я хочу и сеттер ещё вдобавок сделать непубличным?


Понятно, что интерфейсы они типа по природе должны быть публичными, но если я хочу ограничить действия некоторых из них в пределах одной иерархии классов?

 

Перейти на