我正在学习如何在我的 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 什么都没有。你能解释一下发生了什么吗?
谢谢