Stò creando un applicativo con una serie di progetti.
Per ogni entità logica del mio applicativo ho operato come segue:
- Ho creato un progetto contenente le interfacce
- Ho creato un progetto per recuperare i dati da un DB
- Ho creato un progetto per gestire le classi "reali" che uso nell'applicativo
Ad esempio, per gestire l'entità Cliente ho:
- un progetto Common.Clienti dove ho inserito tutte le interfacce (per IClienteDB per i dati che derivano dal DB, ICliente per le classi che utilizzerò nell'applicativo lato utente, IClienti per gestire una collection di ICliente, ecc...)
- un progetto Database.Clienti dove ho le classi per gestire i dati derivanti dal DB (una classe implementa, ad esempio, IClienteDB)
- un progetto Clienti dove ho le classi che uso per gestire i dati lato utente (una classe implementa ICliente -usa un oggetto IClienteDB nel costruttore- ed un'altra IClienti ad esempio)
Stesso discorso vale per un'entità Commesse e tutte le altre entità coinvolte nel programma.
Il problema è che nell'interfaccia ICliente vorrei implementare una Property di questo tipo
Property Commesse() As BindingList(Of ICommessa)
in quanto ogni Cliente può avere più Commesse
e nell'interfaccia ICommessa vorrei implementare una Property di questo tipo
Property Cliente() As ICliente
in quanto ogni Commessa è associata ad un Cliente
Per fare ciò nel progetto Common.Clienti devo referenziare il progetto Common.Commesse e allo stesso tempo nel progetto Common.Commesse devo referenziare il progetto Common.Clienti. Questo è impossibile in quanto creo un riferimento circolare che giustamente Visual Studio non mi permette di effettuare. Ora, considerando che vorrei mantenere progetti separati per entità separate (questione di riusabilità di codice) come posso comportarmi?
Attualmente non ho inserito la property Commesse nell'interfaccia ICliente e la gestisco direttamente nel progetto Clienti... Avete soluzioni più eleganti? Vi sembra che concettualmente ci sia qualcosa di errato nella mia struttura a livello logico?
Grazie!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole