我遇到了一个编译器错误,这对我来说没有任何意义。我有一个internal属性,我想限制它的set块,使其只能通过继承使用。我认为这可以工作:

internal bool MyProperty {
    get { return someValue; }
    protected internal set { someValue = value; }
}

但是编译器说set块上的access修饰符需要比internal更具限制性-我是否缺少某些内容,或者protected internal的限制性不比internal严格?

最佳答案

protected internal的限制较少;它受内部保护(而不是内部)-因此,它还允许其他程序集的子类访问它。您需要反转:

protected internal bool MyProperty {
    get { return someValue; }
    internal set { someValue = value; }
}

这将允许您程序集中的代码以及其他程序集的子类来获取它(读取)-但只有程序集中的代码才能对其进行设置(写)。

关于c# - 访问属性的修饰符;为什么下面的工作不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4447592/

10-10 10:01