asp.net MVC 4 Web アプリケーションで Ninject を使用する方法を学習しています。コンセプトが正しいかどうかはわかりません。これが私がしたことです。
1) Manage NuGet を使用して Ninject.MVC3 をインストール
2)NinjectWebCommon.csに次のコードを追加しました(このファイルはNugetによってApp_startフォルダーに自動的に追加されました)
private static void RegisterServices(IKernel kernel)
{
**kernel.Bind<IProductRepository>.To<ProductRepository>;**
}
3) コントローラーコード
Public Class ProductController
Inherits System.Web.Mvc.Controller
Private _rProduct As IProductRepository
'
' GET: /Product
Sub ProductController(ProductRepository As IProductRepository)
_rProduct = ProductRepository
End Sub
Function ProductList() As ActionResult
Return View(_rProduct.GetProducts())
End Function
End Class
4) IProductRepository コード
Public Interface IProductRepository
Function GetProducts() As IQueryable(Of Product)
End Interface
5) ProductRepository コード
Public Class ProductRepository
Implements IProductRepository
Public Function GetProducts() As IQueryable(Of Product) Implements IProductRepository.GetProducts
Return (New List(Of Product)() From {
New Product() With {.Name = "Football", .Price = 25},
New Product() With {.Name = "Surf board", .Price = 179},
New Product() With {.Name = "Running shoes", .Price = 95}
}.AsQueryable())
End Function
End Class
デバッグすると、コントロールは NinjectWebCommon.cs の RegistryServices() のブレークポイントに移動せず、代わりに ProductController の ProductList() に移動します。この時点で _rProduct は Nothing です。何が起こっているのか説明してもらえますか?
ありがとう