Come parte di un programma che sto sviluppando per scopi pratici, ho creato uno spazio dei nomi Core
progettato per contenere le risorse del codice di base per il programma da utilizzare. Questo spazio dei nomi si trova in un progetto Libreria di classi.
Due degli spazi dei nomi secondari in Core
sono Core.Files
e Core.Errors
. In Core.Files
c'è una classe TxtFile
che è responsabile per l'input-output in file .txt. In Core.Errors
esiste una classe Error
che è responsabile della gestione di un errore specifico. La classe API ti consente di gestire un errore in tre modi:
- Mostra l'errore all'utente.
- Registra l'errore in un file di registro.
- Esegui entrambi.
Nelle ultime due opzioni, Error
dipende da TxtFile
per registrare l'errore nel file di registro (utilizzando il metodo Write()
).
Il metodo Write()
in TxtFile
è costruito in modo tale che se non riesce a scrivere il testo nel file, viene creata un'istanza di Error
. Poiché ovviamente qualcosa non funziona in Write()
, l'errore viene visualizzato all'utente ma non ha effettuato l'accesso al file.
Tutto funziona alla grande. Nel corso del tempo, tuttavia, i due spazi dei nomi sono cresciuti e ho pensato che sarebbe stato opportuno creare un progetto separato per ciascuno di essi.
Il problema è che poiché Error
dipende da TxtFile
e TxtFile
dipende da Error
, esiste una dipendenza circolare tra i due progetti ed è impossibile aggiungere riferimenti tra di loro.
Questa risposta suggerisce che una tale situazione è un'indicazione di cattivo design. Come posso migliorare il design in modo che questo problema non si verifichi? Voglio conservare la struttura di un singolo assembly per sottospazio.
Grazie.