Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Ninject in a Windows Forms application?

I have an WinForms application with this Main Form :

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

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

but i am struggling to inject ICountRepository into the mainform. How do I do that ?

like image 448
Attilah Avatar asked Nov 08 '10 23:11

Attilah


1 Answers

Well the first steps are to switch from:

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

to:

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

Perhaps a clarifying edit or two about what sort of thing you're looking to achieve might get you a more detailed answer.


Highly recommended to get up to speed with the patterns around this is @Mark Seemann's Dependency Injection in .NET book (in it's parlance, the transformation above makes Main your Composition Root - the (single) Get Composes the object graph of your app.

like image 90
Ruben Bartelink Avatar answered Sep 18 '22 23:09

Ruben Bartelink