Raramente he necesitado utilizar esta combinación de modificadores de acceso, ya que creo que en todas las circunstancias menos en las más extremas, es un indicador de diseño deficiente. Sin embargo, a veces es necesario tener clases auxiliares, como convertidores de tipo y editores, que accedan al método dentro de su ensamblado, pero solo permitan que las clases derivadas accedan a él en otros casos de uso.
Un ejemplo podría ser una llamada que convierte un tipo en una cadena para el convertidor de tipo. ToString()
generalmente no se utiliza para este fin, por lo que es posible que tenga una llamada ToPersistableString()
que desee que use el convertidor de tipo, por lo que la convierte en internal
. Luego, usted decide que las personas que se derivan de su clase pueden usar esta llamada como parte de su propio esquema de persistencia para su clase derivada, por lo que también la convierte en protected
.
.NET Framework Uso
AccessibilityNotifyClients
en Control
es protected internal
. Utilizando Reflector, puedo ver que esto se hizo para que el CheckedItemCollection
de CheckListBox
pudiera acceder a él cuando cambie los estados marcados.
yo no lo sabía. Siempre pensé que era AND. –
Es lo que imaginas la primera vez que lo lees. Creo que cualquiera podría adivinar de la misma manera. –
Sí, atrapa a todo el mundo la primera vez, creo. –