2010-11-08 33 views
16

Tengo una aplicación Windows Forms con este formulario principal:¿Cómo se usa Ninject en una aplicación de Windows Forms?

ICountRepository countRepository; 
    public MainForm(ICountRepository countRepository) 
    { 
     this.countRepository = countRepository; 
    } 

    public void IncrementCount() 
    { 
     countRepository.IncrementCount(); 
    } 

pero yo estoy luchando para inyectar ICountRepository en el formulario principal. Cómo puedo hacer eso ?

+0

relacionado: http://stackoverflow.com/questions/19937187/does-di-make-sense-in-a-desktop-app –

Respuesta

20

bien los primeros pasos son para cambiar de:

var form = new MainForm(); 
Application.Run(form); 

a:

var kernel = new StandardKernel(new ModuleRegisteringICountRepository()); 
var form = kernel.Get<MainForm>(); 
Application.Run(form); 

Tal vez una edición de aclarar o dos acerca de qué clase de cosa que usted está buscando para lograr podría obtener una respuesta más detallada.


Muy recomendable para ponerse al día con los patrones de evitar esto es el libro de @ Marcos Seemann Dependency Injection in .NET (en el que es el lenguaje, la transformación anterior hace Main su Composition Root -. El (único) GetComposes the object graph de su aplicación

+1

finalmente hice esto dentro del método principal en el archivo Program.cs. – Attilah

+0

@Attillah: Sí, tiene sentido –

Cuestiones relacionadas