2012-06-24 4 views
7

que tienen algo parecido a la siguiente configuración en una solución de Visual Studio C# .NET:¿Debo evitar referencias 'encadenadas' en Visual Studio con bibliotecas de clases?

Proyecto 1 - TrainDisplay - una aplicación de Windows Forms para mostrar llegada de los trenes.

Proyecto 2 - TrainFetcher - es una biblioteca de clases reutilizable para buscar datos sobre los trenes.

Proyecto 3 - TrainsDataModel es un modelo de datos que contiene clases comunes a todos los demás proyectos, p. Train.cs, TrainRoute.cs, etc.

Cada uno tiene las siguientes referencias:

Proyecto 1: Referencias 2 y 3

Proyecto 2: Referencias 3

es malo para utilizar referencias de esta manera; es decir, el proyecto 1 termina con dos referencias al proyecto 3; uno directo, y uno a través del proyecto 2?

Respuesta

5

No está mal per se, el compilador hará The Right Thing®.

Pero podría ser una indicación de un diseño no tan bueno.

tratar de diseñar las tres capas de tal manera que solamente depende de 2 3, y que 1 solamente depende de 2.

Editar: la última frase no estaba claro. Lo que quise decir fue: "diseñe las tres capas para que sus objetos comerciales solo necesiten hacer referencia al código de acceso a los datos, y que la IU solo se ocupe de los objetos comerciales".

En última instancia, la forma correcta de hacerlo realmente depende de su arquitectura (uso de ORM vs consultas de emisión de forma manual, Active Record vs Mapper y similares).

+0

Bien, eso parece claro. Pero he separado las clases de objeto de negocio en su propia biblioteca con el propósito de volver a utilizarlas en otro proyecto. (Windows 8 y Windows Phone 8, FYI) Así que como están en un ensamble separado para el código que los ejemplifica (una especie de "capa intermedia dividida en dos mitades"), aún necesitaría referenciarlos desde arriba y capas intermedias, ¿sí? –

+0

Sí, tanto la capa DAL como la de interfaz de usuario aún deben conocer sus objetos comerciales. –

+0

Gracias por la aclaración. –

Cuestiones relacionadas