Я реализую набор классов и соответствующих интерфейсов, где я хочу, чтобы каждый класс имел набор общих свойств и набор специализированных свойств, специфичных только для этого класса. Таким образом, я рассматриваю определение интерфейсов по линиям:Наследование нескольких интерфейсов
interface ICommon {...} // Members common to all widgets
interface IWidget1 {...} // specialized members of widget type 1
interface IWidget2 {...} // specialized members of widget type 2
Я пытаюсь выбрать между наличием наследования в интерфейсах, или в классе. Так, в частности, я могу либо сделать это так:
interface IWidget1 : ICommon {...}
interface IWidget2 : ICommon {...}
class Widget1 : IWidget1 {...}
class Widget2 : IWidget2 {...}
... или как это ...
class Widget1: ICommon, IWidget1 {...}
class Widget2: ICommon, IWidget2 {...}
Есть ли веская причина, чтобы идти в одну сторону или другую?
Обновление: повлияет ли это на ответ, если классы должны быть COM-видимыми?
Правильно, да. Все типы виджетов ДОЛЖНЫ реализовать ICommon. Это причина для этого, чтобы обеспечить его реализацию во всех виджетах. –
Тогда да, конечно, у вас должен быть IWidget1 от ICommon. – Josh