Ich implementiere eine Reihe von Klassen und entsprechenden Schnittstellen, wo ich möchte, dass jede Klasse eine Reihe von allgemeinen Eigenschaften und eine Reihe von speziellen Eigenschaften, die nur für diese Klasse spezifisch sind. Also, ich bin unter Berücksichtigung Schnittstellen entlang der Linien definieren:Mehrere Schnittstellenvererbung
interface ICommon {...} // Members common to all widgets
interface IWidget1 {...} // specialized members of widget type 1
interface IWidget2 {...} // specialized members of widget type 2
ich zwischen mit der Vererbung in den Schnittstellen, oder in der Klasse zu wählen versuche. Also, gesagt, ich kann entweder tun es wie folgt aus:
interface IWidget1 : ICommon {...}
interface IWidget2 : ICommon {...}
class Widget1 : IWidget1 {...}
class Widget2 : IWidget2 {...}
... oder so ...
class Widget1: ICommon, IWidget1 {...}
class Widget2: ICommon, IWidget2 {...}
Gibt es einen zwingenden Grund, die eine oder die andere zu gehen?
Update: Würde es die Antwort beeinflussen, wenn die Klassen COM-sichtbar sein müssen?
Recht, ja. Alle Widget-Typen MÜSSEN ICommon implementieren. Das ist der Grund dafür, seine Implementierung in jedem Widget zu erzwingen. –
Dann ja, du solltest definitiv IWidget1 von ICommon ableiten. – Josh