Wdrażam zestaw klas i odpowiednich interfejsów, w których chcę, aby każda klasa miała zestaw wspólnych właściwości i zestaw wyspecjalizowanych właściwości, które są specyficzne tylko dla tej klasy. Więc Zastanawiam zdefiniowanie interfejsów wzdłuż linii:Dziedziczenie wielu interfejsów
interface ICommon {...} // Members common to all widgets
interface IWidget1 {...} // specialized members of widget type 1
interface IWidget2 {...} // specialized members of widget type 2
Staram się wybierać pomiędzy posiadaniem dziedziczenia w interfejsach, lub w klasie. Tak, szczególnie, że można albo zrobić to tak:
interface IWidget1 : ICommon {...}
interface IWidget2 : ICommon {...}
class Widget1 : IWidget1 {...}
class Widget2 : IWidget2 {...}
... albo tak ...
class Widget1: ICommon, IWidget1 {...}
class Widget2: ICommon, IWidget2 {...}
Czy jest jakiś powód, aby przejść jedną lub drugą stronę?
Aktualizacja: czy wpłynęłoby na odpowiedź, gdyby klasy musiały być widoczne w COM?
Dobrze, tak. Wszystkie typy Widget MUSZĄ zaimplementować ICommon. To jest powód, aby wymusić jego wdrożenie w każdym widżecie. –
W takim razie zdecydowanie powinieneś mieć IWidget1 od ICommon. – Josh