2012-01-16 2 views
6

Ho una DLL che fornisce un punto di accesso a un'applicazione ASP.MVC. Chiamiamo questo Primary.DLL. In Primary.DLL sono presenti il ​​contesto dati LINQ-to-SQL e altre classi definite. Da qualche parte in Application_Start(), Assembly.Load() viene chiamato per caricare Secondary.DLL. Secondario NON è referenziato nel file di progetto di Primary.DLL. Ma Primario viene fatto riferimento nel file di progetto di Secondary.DLL perché il contesto dati LINQ-to-SQL e le altre classi menzionate sopra vengono utilizzati in Secondario.Dipendenze DLL circolari in .NET

Ciò creerebbe un problema di dipendenza circolare? Ci sarebbe qualche problema con questo tipo di design?

+1

Hai riscontrato un problema specifico? –

+0

Per inciso, dal momento che le dipendenze circolari funzionano se in qualche modo ingannare il compilatore nel generarle, questo non può essere un problema. – Joshua

risposta

1

Facciamo questo tutto il tempo con le DLL di personalizzazione specifiche del cliente. Usiamo la stessa funzionalità in applicazioni web, servizi e desktop exes.

Le DLL del cliente fanno riferimento alle DLL di progetto di base in modo che possano ereditare da varie classi e implementare interfacce. Per fare ciò, devono avere un riferimento alla base dll.

All'avvio dell'applicazione (global.asax Application_Start o una routine di inizializzazione di exe), vengono caricate le DLL di personalizzazione scoperte tramite Assembly.Load e non viene creato assolutamente alcun riferimento incrociato.

+0

Questa è la personalizzazione esatta che sto cercando di fare. Le classi e le interfacce "di contratto" sono ben definite, ma l'implementazione varierà anno dopo anno. Le future DLL vengono scoperte in fase di esecuzione, ma per costruirle (compilarle), devono fare riferimento ad alcune classi e interfacce definite nella DLL di base. –

1

Gli assembly non vengono ricaricati in AppDomain e si sta caricando solo Secondary.dll all'interno di Application_Start in modo che questo non causi problemi e non provochi alcuna manifestazione di dipendenza circolare.

1

Non creerà un problema di dipendenza circolare, ma potrebbe non essere un ottimo progetto. Le dipendenze circolari richiedono un riferimento effettivo tra due o più progetti.