Как использовать Ninject в приложении Windows Forms? - PullRequest
17 голосов
/ 09 ноября 2010

У меня есть приложение WinForms с этой основной формой:

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

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

но я изо всех сил пытаюсь внедрить ICountRepository в основную форму. Как мне это сделать?

1 Ответ

21 голосов
/ 09 ноября 2010

Ну, первые шаги - это переключиться с:

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

на:

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

Возможно, одно или несколько уточняющих правок о том, чего вы хотите добиться, можетполучить более подробный ответ.


Настоятельно рекомендуется освоить шаблоны, описанные в этой книге, @Mark Seemann Inpendency Injection в .NET книге (на языкеприведенное выше преобразование делает Main вашим корнем композиции - (единственным) Get Составляет граф объектов вашего приложения.

...