在带有MVC3 Ninject扩展的MVC4应用程序中使用Ninject,当绑定到存储库(DbContext)时,我想在控制器中使用InRequestScope
,而在自定义{{}中使用相同的存储库时使用InSingletonScope 1}}。
我想这样做:
MembershipProvider
因此,每个对控制器的Web请求都会获得一个新的repo实例,而MembershipProvider则维护一个可重用的连接到repo。
这似乎在开发环境中正常工作,但我怎么知道正在使用哪个绑定?有没有办法测试范围是否正常工作?
答案 0 :(得分:2)
是的,这很好。这是一种非常简单的测试方法:
public interface IRepo { }
public class Repo : IRepo { }
public class MembershipHelper
{
private readonly IRepo _repo;
public MembershipHelper(IRepo repo)
{
_repo = repo;
}
public string GetId()
{
return _repo.GetHashCode().ToString();
}
}
public class HomeController : Controller
{
private readonly IRepo _repo;
private readonly MembershipHelper _helper;
public HomeController(IRepo repo, MembershipHelper helper)
{
_repo = repo;
_helper = helper;
}
public ActionResult Index()
{
return Content(_repo.GetHashCode().ToString() + " " + _helper.GetId());
}
}
现在导航到/home/index
并观察2个哈希码。每个请求的第一个更改,而第二个保持不变。