此属性在没有访问修饰符的类型中(因此internal
访问):
class SomeType {
private int length;
internal int Length {
get { return length; }
set length = value; }
}
}
允许 SomeType 程序集中的所有类型使用get
和set
访问器。问题:如何将访问限制为set
仅从SomeType派生的类型(确实是 SomeType )?
internal int Length {
get { return length; }
protected set length = value; }
}
被编译器拒绝,因为protected
据说限制性低于internal
(假设:与protected
有交集internal
,但不完全包含在internal
--> 派生类型可以存在于 的范围之外internal
)。
可以由程序集中的任何类型访问并且仅由程序集中的派生类型设置的代码是什么?
编辑:查看答案后,我想我需要添加该属性的另一个特征,因为它可能会在解决方案中有所不同:该属性的类型实际上是SomeType
. 编辑后的代码是:
class SomeType {
private SomeType length;
internal SomeType Length {
get { return length; }
set length = value; }
}
}
如果声明了属性public
,则编译器会发出错误(属性类型 SomeType 无法访问属性 Length)。