アプリケーションで実際にそのカーネルに到達する方法を示さずに、どこにでも Ninject カーネルがある小さな、部分的な、1 つのファイルの例について、私は本当に混乱しています。
(1) 1 つのカーネルをインスタンス化し、それを「静的」コンテキストに保持する必要がありますか? または、リクエストごとに別のものをインスタンス化する必要があります (*Application_BeginRequest* 内)。
(2)「リクエストごとのカーネル」の場合、NinjectWebCommon.csのInitialize()メソッド(NuGetパッケージのインストール時に取得)がbootstrapper.Initialize(CreateKernel)を呼び出すため、Application_Startで呼び出される理由 - NinjectWebCommon.cs
(3)「1 つのグローバル静的カーネル」の場合、「InRequestScope()」は機能しません。次のコードを実行すると、ApplicationStart() の時点でリクエストがないため、null が返されます。
kernel.Components.GetAll<INinjectHttpApplicationPlugin>()
.Select(c => c.RequestScope)
.FirstOrDefault(s => s != null);
(4)繰り返しますが、「kernel per request」の場合、カーネルをどこに保存しますか? HttpContext.Current? とにかく HttpContext.Current を使用する場合、InRequestScope() を使用する意味は何ですか?