在我在网上看到的大多数示例中,MVC 控制器中的 DI 都是这样完成的
public ProductController(IProductRepository Rep)
{
this._rep = Rep;
}
使用了自定义 ControllerFactory,它利用了选择的 DI 框架并注入了存储库。
为什么以上认为优于
public ProuctController()
{
this._rep = ObjectFactory.GetInstance<IProductRepository>();
}
这将获得相同的结果,但不需要自定义控制器工厂。
就测试而言,Test App 可以有一个单独的 BootStrapper。这样,当控制器被测试时,他们可以得到假的存储库,当它们被真正使用时,他们会得到真正的存储库。