Sto implementando un insieme di classi e interfacce corrispondenti dove voglio che ogni classe abbia un insieme di proprietà comuni e un insieme di proprietà specializzate che sono specifiche solo per quella classe. Così, Sto pensando di definire le interfacce lungo le linee di:Eredità di interfaccia multipla
interface ICommon {...} // Members common to all widgets
interface IWidget1 {...} // specialized members of widget type 1
interface IWidget2 {...} // specialized members of widget type 2
sto cercando di scegliere tra l'avere l'eredità nelle interfacce, o nella classe. Così, in particolare, posso neanche fare in questo modo:
interface IWidget1 : ICommon {...}
interface IWidget2 : ICommon {...}
class Widget1 : IWidget1 {...}
class Widget2 : IWidget2 {...}
... o così ...
class Widget1: ICommon, IWidget1 {...}
class Widget2: ICommon, IWidget2 {...}
C'è qualche motivo valido per andare in un modo o l'altro?
Aggiornamento: influenzerebbe la risposta se le classi devono essere COM-visibili?
Giusto, sì. Tutti i tipi di widget DEVONO implementare ICommon. Questo è il motivo per cui lo fa, per rafforzarne l'implementazione in ogni singolo widget. –
Quindi sì, sicuramente dovrei avere IWidget1 derivare da ICommon. – Josh