错误:set访问器的可访问性修饰符必须比属性或索引器更具限制性

Bet*_*033 8 c#

我对财产访问者有点困惑.

我想要一个内部属性,其set访问器只能被派生类访问.

这样的事情

internal [internalClass] MyProperty
{
get {return _prop;}
protected set {_prop = value;}
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,编译器抱怨.

MSDN在讨论此特定错误时建议将set访问修饰符更改为private

这不是我想要的地方.

它看起来Protected Internal应该是一个选项,但是使用此修饰符会产生相同的错误

我有一种感觉,我缺少对访问修饰符的一些基本理解.

谢谢

Jon*_*eet 10

既不是protected也不protected internal是更严格的限制internal.两者都允许来自不同程序集的派生类型访问setter但不访问getter.protected internal给对工会protectedinternal,而不是交集.(有一个访问级别表示CLR中的交集,但它不会被C#公开.)

您可能最好使用私有的setter和一个SetMyProperty仅调用私有setter的受保护方法,如果它与您想要实现的匹配.