Ho una gerarchia di ereditarietà tre in profondità: una classe di base astratta, da cui ricavo un'altra classe astratta, la chiamo classe intermedia, da cui deriverò probabilmente una grande varietà di classi derivate.
A un certo punto, la classe base chiama un metodo this.GenerateXml()
, implementato nella classe derivata, che non restituisce nulla, ma scrive xml in una proprietà pubblica. A questo punto, vorrei che la classe intermedia facesse qualcosa, senza che la classe base o la classe derivata dovessero chiamare un metodo specifico sulla classe intermedia.
Questo è possibile nelle lingue OO? I costruttori si richiamano l'un l'altro sulla catena dell'eredità. Metodi possono? Un oggetto può chiamare un metodo sul suo discendente immediato? La lingua in questo caso è C #
La soluzione ovvia è chiamare un metodo, forse un metodo con lo stesso nome, dalla classe derivata, usando "base". Questo non è l'ideale, perché ogni classe derivata deve ricordarsi di effettuare la chiamata.