Sto creando un'applicazione WPF usando il modello MVVM. In questo momento, i miei modelli di visualizzazione chiama il livello di servizio per recuperare i modelli (come non è rilevante per il modello di visualizzazione) e convertirli in modelli di visualizzazione. Sto usando l'iniezione del costruttore per passare il servizio richiesto al modello di visualizzazione.
È facilmente testabile e funziona bene con viewmodels con poche dipendenze, ma non appena provo a creare viewModels per modelli complessi, ho un costruttore con MOLTI servizi iniettati (uno per recuperare ogni dipendenza e un elenco di tutti i valori disponibili per associare ad un itemsSource per esempio). Mi chiedo come gestire più servizi come quello e avere ancora un modello di visualizzazione che posso facilmente testare unità.
Sto pensando ad alcune soluzioni:
Creazione di un singleton di servizi (IServices) contenente tutti i servizi disponibili come interfacce. Esempio: Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). In questo modo, non ho un costruttore enorme con una tonnellata di parametri di servizi.
Creare una facciata per i servizi utilizzati da viewModel e passare questo oggetto nel ctor del mio viewmodel. Ma poi, dovrò creare una facciata per ciascuno dei miei modelli complessi, e potrebbe essere un po 'troppo ...
Quale pensi sia il modo "giusto" per implementare questo tipo di architettura?
new
per creare altri modelli di vista, ma penso a qualcosa di semplice come un'applicazione MDI in cui facendo clic su un pulsante o menu "nuovo documento" si aggiungerà una nuova scheda o si aprirà una nuova finestra. La shell / il conduttore deve essere in grado di creare nuove istanze di qualcosa , anche se è nascosto dietro uno o alcuni livelli di riferimento indiretto.