Я хочу, чтобы определенная процедура имела возможность установить переменную внутри класса, но в противном случае поле оставалось бы только для чтения.
Например, int 'authlevel' здесь должен быть общедоступным для чтения, но только может быть установлен выборочными субтитрами;
public class SessionAuth
{
int authLevel;
public int AuthLevel
{
get
{return authLevel;}
set
{<<IF CALLER = SUB XYZ>> then authLevel=value;}
}
...
Это возможно?
Вероятно, вы могли бы это сделать с помощью диагностических библиотек (которые используются для создания стеков вызовов), но вы этого не хотите.
Если вам нужно ограничить доступ к установщику, пометьте его как private
чтобы только ваш класс мог его модифицировать. Если вы не можете доверять своему классу, вам нужно пересмотреть свой код и дизайн.
public int MyProp { get; private set; }
protected
и internal
также могут помочь защитить членов.