assemblee riferimenti incrociati
-
14-10-2019 - |
Domanda
Ho tre progetti in mia soluzione .net.
Il progetto principale e due progetti di libreria di classi.
ho scoperto che ho bisogno di riferimento incrociato i progetti libreria di classi.
Posso farlo? E 'sicuro o ci sono alcune considerazioni?
Soluzione
L'IDE non ti consente di quando i progetti sono in una soluzione. Ci sono modi sottili per confuzzle esso. Ma poi la soluzione non può essere costruito da zero (cioè torso + Ricostruire) poiché il riferimento assembly non è ancora disponibile. Refactoring questo, probabilmente si desidera il montaggio di un terzo che entrambi possano fare riferimento.
Altri suggerimenti
riferimenti circolari sono possibile (tramite la riga di comando e alcuni trucchi, non tramite l'IDE), ma sono un grande dolore; non farlo!
In entrambi i aggiungere un più di montaggio per i tipi più comuni, o unire le due biblioteche.
In molti modi, meno è più semplice ... una miriade di dll non vuol dire che hai raggiunto la purezza -. È solo un pasticcio
Quando ho incontrato questo problema, ho classi create che hanno solo le proprietà. Potrebbe essere Employee
, Customer
, Product
, qualsiasi cosa. Quelle classi non hanno bisogno di fare riferimento a qualsiasi altro progetto, in modo più progetti li possono fare riferimento.
I metodi che appartengono a quegli oggetti (Employee
, Customer
, Product
) poi andare nelle loro classi in altri progetti.
Una situazione in cui ho incontrato questo molto spesso si trova in una a tre strati di applicazione - livello di presentazione, livello di business, e lo strato di accesso ai dati. Voglio che il DAL per recuperare i dati e compilare un oggetto Employee, che viene restituito al BLL. Se la classe Employee è nel BLL e ha entrambe le proprietà e metodi, quindi non v'è alcun modo semplice per popolare un oggetto Employee nel DAL e restituirlo al BLL - perché il BLL deve avere un riferimento al DAL, in modo che il DAL non può in riferimento turno BLL. Creazione del progetto separato con proprietà di sola classi (Employee
, Customer
, Product
) è un modo per risolvere questo problema.
Se per "cross reference", vuol dire che si desidera effettuare le seguenti operazioni:
1) Progetto Principale contiene riferimenti a LIBRERIA-ALPHA e LIBRERIA-BETA
2) Progetto LIBRERIA-ALPHA contiene riferimenti a LIBRERIA-BETA
3) Progetto LIBRERIA-BETA contiene riferimenti a LIBRERIA-ALPHA
allora no. Visual Studio non sarà in grado di costruire Principale fino a quando non costruisce ALPHA e BETA . Sarà in grado di costruire ALPHA fino a quando non costruisce BETA . E sarà in grado di costruire BETA fino a quando non costruisce ALPHA . Pertanto, non sarà in grado di costruire qualsiasi cosa.