Mi pregunta no es tanto sobre el uso de interfaces sino más sobre la naturaleza de la organización de un proyecto.¿Deberían las interfaces estar en un proyecto separado de su implementación?
Nota: Estoy usando VisualStudio en una aplicación de varias capas.
¿Deberían mis archivos de interfaz vivir en un proyecto separado de sus implementaciones? Mi idea inicial es que sería útil separar todas mis interfaces de servicio en su propio proyecto (y un proyecto para mis implementaciones iniciales) para que en el futuro la implementación/proyecto concreto pueda ser eliminado y reemplazado por uno nuevo si necesario.
Para aclarar con un ejemplo: Supongamos que tengo una interfaz de capa empresarial llamada IBusinessService que vive en el espacio de nombres MyApp.Business.Services. Mi implementación FooBusinessService existiría en el mismo espacio de nombres, pero un proyecto diferente en VisualStudio. Si posteriormente la implementación necesita ser rediseñada, un desarrollador podría eliminar la referencia a FooService.proj y reemplazarla con una referencia a BarService.proj.
Esto parece que eliminaría la solución de la aplicación al permitirle hacer referencia a un proyecto con solo interfaces sin adquirir también implementaciones concretas (que pueden ser obsoletas o inútiles para usted), pero ¿me falta algo?
posible duplicado de [¿Debo tener un ensamblaje separado para las interfaces?] (Http://stackoverflow.com/questions/3363312/should-i-have-a-separate-samble-for-interfaces) – nawfal