【问题标题】:How to use Ninject in a Windows Forms application?如何在 Windows 窗体应用程序中使用 Ninject?
【发布时间】:2010-11-08 23:23:42
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c# .net winforms ninject


【解决方案1】:

嗯,第一步是切换:

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您的应用程序。

【讨论】:

  • 我终于在 Program.cs 文件的 main 方法中做到了。
最近更新 更多