我有一个带有此主窗体的WinForms应用程序:
ICountRepository countRepository;
public MainForm(ICountRepository countRepository)
{
this.countRepository = countRepository;
}
public void IncrementCount()
{
countRepository.IncrementCount();
}
但是我正在努力将
ICountRepository
注入(inject)到主表单中。我怎么做 ? 最佳答案
好吧,第一步是从:
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。