.net 在多个项目中使用DI/IoC的模式
我有一个包含以下项目的解决方案:.net 在多个项目中使用DI/IoC的模式,.net,dependency-injection,inversion-of-control,ninject,.net,Dependency Injection,Inversion Of Control,Ninject,我有一个包含以下项目的解决方案: 核心(包含用于处理的类,与业务对象/域无关) 域(包含业务对象) 线束(控制台应用程序) MVC4应用程序 持久性(包含存储库接口、EF映射等的实现) 存储库(包含存储库接口) 测试(包含单元测试) 我想使用NInject作为我的IoC容器,因为我有使用NInject的经验,但是我愿意接受一些更适合我需要的建议 域对象需要知道存储库的相关信息,以便进行数据访问(即Person类可能希望检索所有AddressDetails)。所有内容都被编码到接口,以帮助单元
- 核心(包含用于处理的类,与业务对象/域无关)
- 域(包含业务对象)
- 线束(控制台应用程序)
- MVC4应用程序
- 持久性(包含存储库接口、EF映射等的实现)
- 存储库(包含存储库接口)
- 测试(包含单元测试)
其他内存中的类不应该加入。听起来您应该将其引入MVC4项目和控制台应用程序。因此,对于整个生产代码,所有依赖项将只在那里耦合。您还可以定义自己的
StandardKernel
实现,或者使用自动发现查找所有实现
这里有两个示例,分别是如何实现组合根目录
和ninject.web.mvc
,这两个示例可以作为起点<控制台应用程序的代码>合成根目录通常具有琐碎的实现
对于测试项目,您可以使用,也可以自己构建所有依赖项。第二个选项对于纯单元测试应该是显而易见的,但对于集成测试,第一个选项更合适
域对象的注入
- 首先,有几种众所周知的注入方法:
- 通过构造函数
- 财产,
- 方法
- 上下文李>
- 其次,这样做可以避免依赖任何依赖项注入库