Comprendo i vantaggi dell'iniettare le dipendenze negli oggetti, ma non ho trovato molte indicazioni sui tipi di oggetti da iniettare e quando renderli singleton.
Se prendiamo come esempio un'applicazione con i seguenti tipi di oggetti:
- Servizi (inclusi repository e servizi aziendali come calcolare il prezzo)
- Visualizzazioni
- ViewModels
servizi
I servizi di iniezione sono l'esempio tipico dato ed è chiaro che questi non sono registrati come singleton nel contenitore in quanto sono senza stato.
Era l'intenzione originale che solo i servizi dovrebbero essere iniettati dai contenitori?
Views / ViewModels & altri oggetti di stato duraturi
Il modo generale per accedere a un oggetto di lunga durata in più punti è stato quello di utilizzare un registro (o simile), supponendo che non possiamo passarlo come parametro. Ora abbiamo la possibilità di registrare l'oggetto come un singleton in un contenitore e iniettarlo dove necessario.
Non riesco a vedere alcun problema nell'usare il singleton in un approccio contenitore oltre il problema di rimuovere l'oggetto dal contenitore quando termina il suo ciclo di vita (non sono sicuro di quanto sarà facile - Io uso Unity).
Sarebbe interessato a conoscere eventuali problemi che altri possono prevedere.
Per inciso, il framework MVVM Light utilizza un ViewModelLocator piuttosto che iniettare viewmodels.