2014-11-07 25 views
5

Come una classe derivata può chiamare un metodo da una classe base.
Altre classi non dovrebbero avere accesso d'altra parte.
Chiamare un metodo di base privato da una classe derivata in C#

La mia situazione:
ho una classe base, in wich ho scritto un metodo privato per registrare alcuni valori.

private void register(string param1, int param2){//...} 

Ho fatto questo per consentire sottoclassi di registrare cose diverse.
Il problema è che una classe derivata non può accedere a metodi o campi privati ​​di una classe base.
Questo ha senso per me, poiché privato significa PRIVATO.

Non voglio rendere pubblico il metodo perché le altre classi non dovrebbero essere in grado di chiamare questo metodo.
Qualcuno può fornire una soluzione o guidarmi verso un design migliore?

+11

renderlo 'protected'? – AlexD

+0

Oh uomo! Ho sempre pensato che proteggere non consentirebbe l'accesso da altri pacchetti. (Questo è solo in Java, immagino ...) Scrivilo come risposta e lo accetterò. : D –

+1

No, questo è 'internal', puoi anche combinare i due' 'protected internal' 'che consente l'accesso da classi derivate e qualsiasi classe nello stesso assembly. –

risposta

14

Quando dichiari qualcosa di privato, solo la classe che lo definisce può accedervi. Nemmeno derivato classi

Quello che vi serve è protected

Quando qualcosa è dichiarato come protected vi si può accedere da qualsiasi classe derivata mentre rimanendo nascosto da altre classi non correlate

Problemi correlati