2010-11-08 54 views
16

我有这个主窗体的WinForms应用程序:如何在Windows窗体应用程序中使用Ninject?

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

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

,但我在努力注入ICountRepository到MainForm的。我怎么做 ?

+0

相关:http://stackoverflow.com/questions/19937187/does-di-make-sense-in-a-desktop-app – 2013-11-14 15:38:43

回答

20

嘛第一步是从切换:

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

到:

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

也许你正在寻找实现可能让你一个什么样的事情澄清编辑或两个更详细的答案。


强烈推荐起床与模式,以加快解决此是@马克西曼的Dependency Injection in .NET书(在它的说法,改造上面,使MainComposition Root - 您的应用程序的(单)GetComposes the object graph

+1

我终于这样做了Program.cs文件中的主要方法 – Attilah 2010-11-09 14:46:42

+0

@Attillah:是的,有道理 – 2010-11-09 17:22:07

相关问题