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

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

09.10.24 09:14
Re: Пустой виртуальный метод вместо интерфейса
 
Программист коренной житель
в ответ alex445 08.10.24 19:27
Т.е. в интерфейсе не объявляем геттер, тогда в имплементации можно его сделать с каким угодно уровнем доступа.

Именно. А также не стоит забывать и про internal. Это тоже очень полезная область видимости :) Есть правда еще 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; }
}

или так:

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

    public interface IPresenterExt : IPresenter
    {
        public string DisplayName { set; }
    }

    public class Presenter : IPresenterExt
    {
        public string DisplayName { get; set; }
    }


но если я хочу ограничить действия некоторых из них в пределах одной иерархии классов?

Сформулируй проблему поточнее.

 

Перейти на