Tecnicamente non fa alcuna differenza se si crea il costruttore public
invece di protected
in una classe astratta. L'accessibilità/visibilità del costruttore è ancora esattamente la stessa: la stessa classe o classi derivate. Le due parole chiave hanno effetti indistinguibili a tutti gli effetti.
Quindi, questa scelta è solo una questione di stile: digitare protected
per soddisfare le persone esperte orientate agli oggetti.
Riflessione per impostazione predefinita includere solo il costruttore quando è public
, ma non si può chiamare quel costruttore in ogni caso.
IntelliSense mostrerà il costruttore public
quando si digita new
, ma non è comunque possibile chiamare tale costruttore.
I metadati dell'assieme riflettono il fatto che il costruttore è pubblico o protetto.
In altre parole: perché vuoi inquinare l'IntelliSense di altre persone con spazzatura inutile? –
I costruttori di Andrea si visualizzano solo in intellisense per le chiamate nuove e di base. Classicamente le classi astratte vengono filtrate da nuove prima che l'accessibilità venga presa in considerazione perché il controllo dell'estrazione è molto semplice ed economico. – JaredPar
Detto questo, il compilatore non dovrebbe imporre che le classi astratte ** non possano ** avere costruttori 'public'? – Yuck