我遇到了一个编译器错误,这对我来说没有任何意义。我有一个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/