2010-11-08 15 views
16

Ho un'applicazione WinForms con questo form principale:Come utilizzare Ninject in un'applicazione Windows Form?

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

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

ma io sto lottando per iniettare ICountRepository nella MainForm. Come lo faccio ?

+0

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

risposta

20

Bene i primi passi sono per passare da:

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

a:

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

Forse una modifica chiarire o due su che tipo di cosa che stai cercando di raggiungere potrebbe ottenere un risposta più dettagliata.


Altamente raccomandato per arrivare fino a velocità con i modelli intorno a questo è Dependency Injection in .NET libro di @ Mark Seemann (nel suo gergo, la trasformazione di cui sopra rende Main tuo Composition Root -. Il (singolo) GetComposes the object graph della vostra applicazione

+1

ho finalmente fatto questo all'interno del metodo principale nel file Program.cs. – Attilah

+0

@Attillah: Sì, ha un senso –