如何在Windows窗体应用程序中使用Ninject?

时间:2010-11-08 23:23:42

标签: c# .net winforms ninject windows-forms-designer

我有一个带有此主窗体的WinForms应用程序:

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

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

但我正在努力将ICountRepository注入到主体中。我该怎么做?

1 个答案:

答案 0 :(得分:21)

首先要切换:

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

为:

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

或许澄清一两个关于你想要达到的目标的编辑可能会给你一个更详细的答案。


强烈建议您快速了解周围的模式是@Mark Seemann的Dependency Injection in .NET书(用它的说法,上面的转换使Main成为Composition Root - (单个)您应用的Get Composes the object graph