Sfondo
Ho un'interfaccia definita per un buffer circolare chiamato ICircularBuffer
in un progetto separato. Questo ICircularBuffer
è qualcosa che usiamo dappertutto, quindi risiede nel progetto CommonInterfaces
.
Bene, abbiamo un'altra interfaccia IEquipmentController
che controlla alcune apparecchiature molto distinte. Questo pezzo di equipaggiamento produce alcuni dati. Vorrei passare il mio buffer a IEquipmentController
in modo da poter leggere il buffer in modo asincrono per riferimento dal thread che lo ha passato.
Il problema è che IEquipmentController
e ICircularBuffer
sono definiti in due progetti separati. Quindi questo mi porta nella mia domanda ...
Domanda
A causa del modo in cui CommonInterfaces
viene utilizzato in tutto il luogo, va bene che il mio progetto di IEquipmentController
prenda una dipendenza dal progetto CommonInterfaces
?
In alternativa
Forse posso avere il concreto EquipmentController
a prendere la dipendenza da CommonInterfaces
... e poi solo il IEquipmentController
definire un metodo che accede al buffer? Rimanendo così ignaro dei dettagli di implementazione (ed evita di passare per riferimento completamente)? Immagino che in questo modo le due interfacce ( IEquipmentController
e ICircularBuffer
) non vengano legate insieme.
Qual è la mia migliore opzione qui? E in generale, ci sono mai situazioni in cui è una buona idea che un'interfaccia si assuma da un altro progetto solo per accedere ad un'altra interfaccia?