Estoy implementando un conjunto de clases e interfaces correspondientes en las que quiero que cada clase tenga un conjunto de propiedades comunes y un conjunto de propiedades especializadas que son específicas solo para esa clase. Por lo tanto, estoy considerando la definición de las interfaces a lo largo de las líneas de:Herencia de Interfaz Múltiple
interface ICommon {...} // Members common to all widgets
interface IWidget1 {...} // specialized members of widget type 1
interface IWidget2 {...} // specialized members of widget type 2
estoy tratando de elegir entre tener la herencia en las interfaces, o en la clase. Así, en concreto, ya sea que puedo hacerlo de esta manera:
interface IWidget1 : ICommon {...}
interface IWidget2 : ICommon {...}
class Widget1 : IWidget1 {...}
class Widget2 : IWidget2 {...}
... o así ...
class Widget1: ICommon, IWidget1 {...}
class Widget2: ICommon, IWidget2 {...}
¿Hay alguna razón de peso para ir en una dirección o la otra?
Actualización: ¿Afectaría la respuesta si las clases deben ser COM-visibles?
Correcto, sí. Todos los tipos de widgets DEBEN implementar ICommon. Esa es la razón para ello, para hacer cumplir su implementación en todos y cada uno de los artilugios. –
Entonces sí, definitivamente debería tener IWidget1 derivado de ICommon. – Josh