これは、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 インスタンスは null であり、AddFilterEngine メソッドは呼び出されません。これは Ninject で SearchResults が作成されていないためでしょうか? 親フォームにハードコーディングされています。もしそうなら、この時点からすべての親もNinjectで作成する必要があると思いますか?