Ho un'interfaccia il cui compito è comunicare con il repository (che implementa qualche interfaccia). Non sembra logico implementare questa interfaccia senza ricevere un repository, quindi mi piacerebbe iniettarlo.
Quindi chiedo: dove devo ricevere il repository? Poiché è richiesto in quasi tutte le chiamate di metodi, sembra ragionevole iniettare la dipendenza nel costruttore e non in (praticamente) ogni metodo nell'interfaccia poiché ciò porta a una volontà del principio DRY (non ripeterlo).
D'altro canto, non c'è modo di imporre che ogni implementatore abbia questa dipendenza nel suo costruttore (inoltre - come dovrebbe sapere un implementatore?)
Ho anche pensato di avere una classe astratta invece di un'interfaccia, ma ho presto escluso questa opzione per non limitare l'opzione di derivare un'altra classe.
Cosa dovrei fare in questa situazione, dove dovrei ricevere la dipendenza?