C# 控制对类成员的访问

C# 控制对类成员的访问,c#,class,C#,Class,我希望一个特定的例程能够在类中设置一个变量,但字段在其他方面保持只读 例如,这里的int“authlevel”应该是可公开读取的,但只能由选择性sub设置 public class SessionAuth { int authLevel; public int AuthLevel { get {return authLevel;} set {<<IF CALLER = SUB X

我希望一个特定的例程能够在类中设置一个变量,但字段在其他方面保持只读

例如,这里的int“authlevel”应该是可公开读取的,但只能由选择性sub设置

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

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

    }
  ...
公共类SessionAuth
{
int authLevel;
公共int身份验证级别
{
收到
{返回authLevel;}
设置
{然后authLevel=value;}
}
...
这可能吗?

您可能可以通过诊断库(用于生成调用堆栈)执行此操作,但您不想这样做

如果您需要限制对setter的访问,请将其标记为
private
,以便只有您的类可以修改它。如果您不能信任自己的类,则需要重新考虑您的代码和设计

public int MyProp { get; private set; }
您可能可以通过诊断库(用于生成调用堆栈)来实现这一点,但您不想这样做

如果您需要限制对setter的访问,请将其标记为
private
,以便只有您的类可以修改它。如果您不能信任自己的类,则需要重新考虑您的代码和设计

public int MyProp { get; private set; }

如前所述,这些循环是无止境的。例如,get方法调用get方法,get方法调用get方法,…这是一个公平的观点-我真的不是很好…通常通过在公共接口中公开getter,然后拥有内部类,这些类具有这些属性的内部setter。这将setter限制为内部librar仅y成员,而其他库只知道readonly接口。旁注:DanB-请避免在帖子中使用问候语/感谢语。我已经更新了您的代码,以删除无限递归-对于以后的帖子,除了回复评论外,还可以编辑您的帖子(感谢您的及时回复)。如前所述,这些是无止境的循环。例如,get方法调用get方法,get方法调用get方法,…这是一个公平的观点-我真的不是很好…通常通过在公共接口中公开getter,然后拥有内部类,这些类具有这些属性的内部setter。这将setter限制为内部libra仅限ry成员,而其他库只知道readonly接口。旁注:DanB-请避免在帖子中使用问候语/感谢语。我已经更新了您的代码,以删除无限递归-对于以后的帖子,除了回复评论外,还可以编辑您的帖子(感谢您的及时回复)。更相关的问题是我是否可以信任自己的编码;)谢谢你的回答。@DanB是的,如果你不能信任自己的类,那么你有更大的问题;)很高兴我能提供帮助。
受保护的
内部的
也可以帮助保护成员。更相关的问题是我是否可以信任自己的编码ng;)谢谢您的回复。@DanB是的,如果您不能信任自己的类,那么您有更大的问题;)很高兴我能提供帮助。
受保护的
内部
也可以帮助保护成员。