如何在ASP.NET MVC模型中使用依赖注入?
-
06-07-2019 - |
题
我想在ASP.NET MVC模型中注入一个依赖项,但我无法弄清楚管道在哪里进行注入。
使用ControllerFactory非常简单,但在处理模型时几乎没有那么多。
解决方案 3
我最终创建了一个服务定位器: http://martinfowler.com/articles/injection html的#UsingAServiceLocator
我发现它比处理IoC容器并尝试在整个MVC管道中插入我的DI代码更容易。
其他提示
您可以在Shiju Vargheses博客上找到合理的方法: ASP.NET MVC提示:Unity应用程序块的依赖注入
通常我会在控制器中注入依赖项,如此
PersonController(IPersonRepository r)
{
\\ constrtuctor code
}
在模型中可能需要某些继承接口的实例时,你会做这样的事情:
var r = container.Resolve<IPersonRepository>();
我建议您查看S#arp架构 http://www.sharparchitecture.net/
asp.net mvc的开源框架插件。
您是否完全确定需要在域模型中注入依赖项?实体或业务对象通常将封装状态并公开方法以根据业务规则修改该状态。不属于此类别的代码通常会在服务中找到。您是否已阅读域名服务的概念根本?也许使用一个更适合您的需求,您不需要将任何依赖注入您的域本身。
结帐这个样本我是根据Ayende在他博客上的解释创建的。基本上,我使用Castle作为我的IoC容器,我使用Mvc Contrib将所有控制器添加到容器中,并让Mvc从中获取它们。然后我可以在容器中注入任何东西,例如NHibernate ISession。
如果你想在模型类(实体)中注入东西,NH现在支持 Hibernate管理对象的依赖注入。请参阅此,此和这个用于Spring和Windsor的具体示例。
你所谈论的更像是积极记录模式。
AR是否可能取决于您使用的ORM / DAO。
AR模式通常更适合小型项目。