2012-06-24 4 views
7

ho qualcosa di simile la seguente configurazione in una soluzione Visual Studio C# .NET:Devo evitare riferimenti "concatenati" in Visual Studio con le librerie di classi?

Progetto 1 - TrainDisplay - un'applicazione WinForms per visualizzare gli arrivi dei treni.

Progetto 2 - TrainFetcher - è una libreria di classi riutilizzabile per il recupero dei dati sui treni.

Progetto 3 - TrainsDataModel è un modello di dati, contenente classi comuni a tutti gli altri progetti, ad es. Train.cs, TrainRoute.cs e così via.

Ognuno ha i seguenti riferimenti:

Progetto 1: I riferimenti 2 e 3

Progetto 2: Riferimenti 3

È brutto per utilizzare riferimenti in questo modo; ad esempio il progetto 1 termina con due riferimenti al progetto 3; uno diretto e uno tramite il progetto 2?

risposta

5

Non è sbagliato di per sé, il compilatore farà The Right Thing®.

Ma potrebbe essere un'indicazione di un design non eccezionale.

cercare di progettare i tre strati in modo tale che 2 dipende solo da 3, e che 1 dipende solo da 2.

Edit: l'ultima frase non era chiaro. Quello che intendevo era: "progettare i tre livelli in modo che gli oggetti aziendali abbiano solo bisogno di fare riferimento al codice di accesso ai dati e che l'interfaccia utente riguardi solo gli oggetti di business".

In definitiva, il modo corretto per farlo in realtà dipende dall'architettura (utilizzo di ORM rispetto alle query di emissione manualmente, Active Record vs Mapper e simili).

+0

Ok, sembra chiaro. Ma ho separato le classi degli oggetti business nella loro libreria allo scopo di riutilizzarle in un altro progetto. (Windows 8 e Windows Phone 8, FYI) Così come sono in un assembly separato per il codice che li istanzia (una sorta di 'middle layer diviso in due metà'), quindi avrei ancora bisogno di fare riferimento a loro da entrambi i top e strati intermedi, sì? –

+0

Sì, sia il livello DAL sia il livello dell'interfaccia utente devono ancora conoscere i tuoi oggetti di business. –

+0

Grazie per il chiarimento. –