Контроль доступа к членам класса

1

Я хочу, чтобы определенная процедура имела возможность установить переменную внутри класса, но в противном случае поле оставалось бы только для чтения.

Например, int 'authlevel' здесь должен быть общедоступным для чтения, но только может быть установлен выборочными субтитрами;

public class SessionAuth
{
    int authLevel;
    public int AuthLevel
    {
        get
            {return authLevel;}

        set
            {<<IF CALLER = SUB XYZ>> then authLevel=value;}

    }
  ...

Это возможно?

  • 0
    Как написано, это бесконечные петли. Например, метод get вызывает метод get, который вызывает метод get, ...
  • 0
    Это справедливо - я действительно не очень хорош ....
Показать ещё 2 комментария
Теги:
class

1 ответ

4
Лучший ответ

Вероятно, вы могли бы это сделать с помощью диагностических библиотек (которые используются для создания стеков вызовов), но вы этого не хотите.

Если вам нужно ограничить доступ к установщику, пометьте его как private чтобы только ваш класс мог его модифицировать. Если вы не можете доверять своему классу, вам нужно пересмотреть свой код и дизайн.

public int MyProp { get; private set; }
  • 0
    Более уместный вопрос - могу ли я доверять своему кодированию;) Спасибо за ответ.
  • 1
    @DanB Да, если вы не можете доверять своему классу, у вас есть большие проблемы;) Рад, что смог помочь. Обратите внимание, что protected и internal также могут помочь защитить членов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню