我有一个带有此主窗体的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

07-28 02:02