¿Es posible usar ninject para la inyección de dependencia de modo que el resultado sea algo así como la inyección que puedo obtener en MVC? Para elaborar, si uso el adaptador ninject MVC puedo declarar que mis controladores web tienen parámetros de constructor que luego serían inyectados automáticamente por ninject.Inyección de constructor Ninject en WPF
Sin embargo, no he encontrado una extensión tal ninject para WPF, que me permita tener una ventana como esta:
public partial class MainWindow : Window
{
private readonly IService injectedService;
public MainWindow(IService injectedService)
{
this.injectedService = injectedService;
}
}
me gustaría hacer esto sin usar explícitamente el IKernel
en mi Inicio de la aplicación principal para obtener una instancia de ventana principal. Preferiría usar el método normal de configuración xaml para obtener una instancia de la ventana principal y todas las ventanas posteriores.
¿Esto es posible? ¿Hay alguna forma de enganchar en la creación del objeto generado por xaml para modificarlo y usar Ninject para la inyección de dependencia del constructor?
No creo que exista tal extensión, porque en WPF normalmente haces uso del patrón MVVM y así inyectaría los servicios en tus clases de ViewModel. –
Pero, ¿no se crean los modelos a través del XAML también? Es cierto que no soy un experto en WPF, pero ¿no necesitarían los modelos el mismo tipo de inyección de dependencia? Me preocupa que mi contenedor muestre lo que impediría las pruebas unitarias del proyecto. – Dervall
No, los ViewModels no se crean en XAML. Se crean en ViewModelLocator, consulte [aquí] (http://windowsphonegeek.com/articles/Working-with-a-simple-ViewModelLocator-from-MVVM-Lite) para ver un ejemplo. Sus Vistas o Modelos de Vista no saben nada sobre su contenedor de inyección de dependencia. –