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