正如你可能已经知道,.NET框架的内部保护的访问修饰符工作在一种奇怪的方式:这并不意味着类是保护 和 内部,它说,类保护 或 内部 ; 也就是说,可以从同一程序集中以及从同一层次结构中访问修改后的类或成员.
所以,知道这个:你什么时候使用它?你能给我举个例子吗?.NET基类库中是否有一个很好的,有启发性的用法示例?
我很少需要使用这种访问修饰符组合,因为我认为除了最极端的情况之外,它都是设计不佳的指标.但是,有时需要让类型转换器和编辑器等辅助类访问程序集中的方法,但只允许派生类在其他用例中访问它.
一个示例可能是将类型转换为类型转换器的字符串的调用.ToString()
通常不用于此目的,因此您可能有一个ToPersistableString()
您希望类型转换器使用的调用,因此您可以使用它internal
.然后,您决定从您的类派生的人可能希望将此调用用作其派生类的自己的持久性方案的一部分,以便您也可以使用它protected
.
.NET框架使用
AccessibilityNotifyClients
的Control
是protected internal
.使用反射器,我可以看到,这样做,这样的CheckedItemCollection
的CheckListBox
变化检查状态时,就可以访问它.