19

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 ?

demoncodemonkey
  • 11,730
  • 10
  • 61
  • 103
Attilah
  • 17,632
  • 38
  • 139
  • 202

1 Answers1

23

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.

Ruben Bartelink
  • 59,778
  • 26
  • 187
  • 249