我正在学习依赖注入,需要帮助更好地理解控制器工厂。
我需要通过构造函数注入
在HomeController
中注入SqlReceitaRepository
。
HomeController构造函数
private readonly IReceitaRepository repositorio;
public HomeController(IReceitaRepository repositorio)
{
if (repositorio == null)
throw new ArgumentException("repositorio");
this.repositorio = repositorio;
}
有了实现了 SqlReceitaRepository
的代码,我现在可以设置 ASP.NET MVC 注入它的实例到 HomeController 的实例中,但是我应该如何做呢?
详细信息:我使用的是 NHibernate 而不是 Entity Framework。
如果需要,那么用于完成此任务的类将属于哪个层?
我阅读了一些文章,发现我需要在我的 Global.asax
中添加一行新的代码。
Global.asax
var controllerFactory = new ReceitaControllerFactory();
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
我假设
ReceitaControllerFactory
应该包含IControllerFactory
的实现。
但是查看IControllerFactory
...
public interface IControllerFactory
{
IController CreateController(RequestContext requestContext, string controllerName);
SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName);
void ReleaseController(IController controller);
}
我们可以看到CreateController方法,但是我该如何将SqlReceitaRepository的实例注入到HomeController的实例中呢?