我有一种感觉,这只是我在winforms中对DI的误解。
我正在尝试将Ninject实施到现有的 winforms 应用程序中。在 Program.cs 我正在做类似的事情
IKernel kernel = new StandardKernel(new NinjectBindings());
Application.Run(kernel.Get<MainContainer>());
我的 NinjectBindings 有
Bind<IFilterEngine>().To<FilterEngine>();
然后在 MainContainer 表单的客户用户控件(SearchResults.cs)中,我尝试像这样使用方法注入
[Inject]
public void AddFilterEngine(IFilterEngine filterEngine)
{
_filterEngine = filterEngine;
}
该应用程序编译并运行良好,但是我的 _filterEngine 实例为空,并且从未调用 AddFilterEngine 方法。这是因为 SearchResults 不是用 Ninject 创建的吗?它以其父形式硬编码。如果是这样,我假设从这一点开始的每个父母也需要用 Ninject 创建?