So che non è possibile ereditare i costruttori in C#, ma probabilmente c'è un modo per fare ciò che voglio fare.C#: costruttori ereditari
Ho una classe base che è ereditata da molte altre classi e ha un metodo Init
che fa un po 'di inizializzazione prendendo 1 parametro. Tutte le altre classi che ereditano anche bisogno di questo inizializzazione, ma avrei bisogno di creare costruttori separate per tutti loro che vorrebbe in questo modo:
public Constructor(Parameter p) {
base.Init(p);
}
che viola i principi del tutto a secco! Come posso inizializzare tutte le cose necessarie senza creare dozzine di costruttori?
Peggio della violazione dei principi ASCIUTTO sta violando il principio invariante. 'Init' come nome di un metodo è generalmente un segno forte che gli oggetti sono inutilmente esistenti in stati non validi in cui l'unica cosa per cui sono buoni è la causa di bug. –
Il C# in non segue affatto l'ASCIUTO. Questo può essere fastidioso ma ... onestamente, non puoi dirmi che non sei stanco di digitare 'public',' protected' e 'private' ancora e ancora? –
@ SlippD.Thompson: Questa è un'altra area in cui C++ è in realtà * less * wordy di linguaggi più semplici ... Il precedente che ho appena visto riguardava l'esposizione dei costruttori di base in una classe derivata. –