È possibile utilizzare ninject per l'iniezione delle dipendenze in modo che il risultato sia simile all'iniezione che posso ottenere in MVC. Per elaborare, se utilizzo l'adattatore MVC ninject, posso dichiarare che i miei web controller hanno parametri di costruzione che sarebbero poi automaticamente iniettati da ninject.Iniezione di iniettore Ninject in WPF
Tuttavia, non ho trovato un'estensione tale Ninject per WPF, che mi avrebbe permesso di avere una finestra come questa:
public partial class MainWindow : Window
{
private readonly IService injectedService;
public MainWindow(IService injectedService)
{
this.injectedService = injectedService;
}
}
Vorrei fare questo senza usare esplicitamente il IKernel
nel mio avvio dell'applicazione principale per ottenere un'istanza di finestra principale. Preferisco di gran lunga utilizzare il normale metodo di configurazione di xaml per ottenere un'istanza della finestra principale e tutte le finestre successive.
È possibile? C'è un modo per agganciarsi alla creazione di oggetti generata da xaml per modificarlo per usare Ninject per l'iniezione delle dipendenze del costruttore.
Non penso che tale estensione esista, perché in WPF normalmente si utilizza il pattern MVVM e quindi si inietterebbero i servizi nelle classi ViewModel. –
Ma non sono i modelli stessi creati tramite XAML? Devo ammettere che non sono un esperto di WPF, ma i modelli non avrebbero bisogno dello stesso tipo di iniezione di dipendenza? Sono preoccupato per il fatto che il mio contenitore mostri quale ostacolerebbe il testing unitario del progetto. – Dervall
No, i ViewModels non sono creati in XAML. Vengono creati in ViewModelLocator, vedere [here] (http://windowsphonegeek.com/articles/Working-with-a-simple-ViewModelLocator-from-MVVM-Lite) per un esempio. Le tue viste o ViewModels non sanno nulla del tuo contenitore per le dipendenze. –