|
|
1
2
首先,如果你想使用依赖注入,你必须通过第三方依赖注入容器——例如,NInject或Unity以及其他许多容器(或者,如果你正在寻找一些挑战,可以构建自己的容器)。 其次,您的HomeController应该采用一个抽象的工作单元类型(接口或抽象类)作为参数。实际上,您在HomeController构造函数中使用了一个具体类型,这不是依赖注入世界中的工作方式(当使用“构造函数注入”时,依赖容器负责根据容器配置为抽象提供具体实现)。
你的第三个
如果您正在处理UnitOfWork和Repository模式(以及数据由DB支持),您应该在NInject附近使用ASP.NET MVC3进行一些搜索,并查看EntityFramework。 编辑
针对您的评论,处理
正如我之前所说,这没有多大意义:
UnitOfWork可以被粗略地视为存储库的“容器”,允许访问这些存储库并协调这些存储库上的操作(如提交所有更改)。你应该有一个抽象的非泛型类型
这种方式而不是注入
这就是理论和总体思路。
现在更具体地说,关于ASP.NET MVC中的DI,对DI容器进行“管道化”的更常见方法(还有其他方法)是创建一个继承自
这只是一个非常高的概述,有很多棘手的细节,但这是一个粗略的想法。 编辑2 刚刚在我的博客上发布了一篇文章(我的第一篇),解释如何在ASP.NET MVC项目中正确使用Repository和UnitOfWork模式。 |
|
|
2
1
你说的是ASP.NET MVC吗? 我已经和Ninject合作了一段时间,对此我感到非常高兴!看看这个存储库中的示例应用程序,了解如何在ASP.NET MVC 3中使用它: https://github.com/ninject/ninject.web.mvc/tree/master/mvc3 为了进一步扩展回复,下面是我设置Ninject绑定的代码片段
我的控制器:
然后,您所需要做的就是确保UnitOfWork类的构造函数中的任何参数也绑定在内核中。 |