Je sais qu'il n'est pas possible d'hériter de constructeurs en C#, mais il y a probablement un moyen de faire ce que je veux faire.C#: constructeurs héritiers
J'ai une classe de base qui est héritée par beaucoup d'autres classes, et elle a une méthode Init
qui effectue une initialisation en prenant 1 paramètre. Toutes les autres héritant des classes ont également besoin de cette initialisation, mais je avais besoin de créer des constructeurs distincts pour tous ceux qui voudraient comme ceci:
public Constructor(Parameter p) {
base.Init(p);
}
qui viole totalement les principes SECS! Comment puis-je initialiser toutes les choses nécessaires sans créer des douzaines de constructeurs?
Pire que de violer les principes DRY est en violation du principe invariant. "Init" comme le nom d'une méthode est généralement un signe fort que les objets existent inutilement dans des états invalides où la seule chose pour laquelle ils sont bons cause des bogues. –
C# ne suit pas vraiment DRY du tout. Cela peut être gênant mais ... honnêtement, vous ne pouvez pas me dire que vous n'êtes pas fatigué de taper 'public',' protected', et 'private' encore et encore et encore? –
@ SlippD.Thompson: C'est un autre domaine où C++ est en fait * moins * verbeux que des langages plus faciles ... Le précédent que je viens de voir concernait l'exposition de constructeurs de base dans une classe dérivée. –