How to use Ninject in a Windows Forms application?

Attilah picture Attilah · Nov 9, 2010 · Viewed 9k times · Source

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 ?

Answer

Ruben Bartelink picture Ruben Bartelink · Nov 9, 2010

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.