Recentemente ho iniziato a lavorare con una versione nuova e brillante di un codebase che usa le interfacce dappertutto per ... praticamente tutto. Penso che tutte le nostre lezioni concrete implementino interfacce.
Il problema che ho notato è che il progetto non sembra codificare nell'interfaccia! Gli elementi trasmessi utilizzando le interfacce vengono coerentemente convertiti in tipi specifici. Mi sembra una cattiva idea, ma non riesco a capire chiaramente perché sia sbagliato. Sembra che usare le interfacce solo per trasmettere regolarmente stia perdendo i vantaggi di entrambe le interfacce e di un linguaggio strongmente tipizzato.
Per riformulare come una domanda: è una buona pratica? Perché?
Modifica: questo non è un duplicato di Qual è il motivo per cui ogni classe di servizio ha un'interfaccia? in quanto la mia domanda si riferisce specificamente al casting da un'interfaccia a una dozzina o più classi concrete che implementano tale interfaccia.