我是DI和IoC模式的新手。我正在研究一个新项目,并希望最大限度地减少我的对象。我的课程在解决方案中分为几个项目。所以我下载了NInject,并在应用程序启动(Main函数或Global.asax)中读取应创建绑定的地方。我不明白的一件事是,在那种情况下,我将不得不引用那些包含类的程序集来创建绑定,这意味着这些类与我创建绑定的对象结合在一起。是对的吗?这是否意味着使用MEF是一个更好的主意?任何人都可以解释IoC的工作原理以及为什么使用它是个好主意? 谢谢关于DI和IoC容器的问题
2
A
回答
2
控制反转不是没有引用程序集,而是关于在逻辑和相关服务之间创建契约。它通过在使用服务时抽象出具体的实例化来促进可测试性和可重用性。
例如,这允许您传入不同的数据服务,将数据保存到内存表中而不是数据库,这意味着您不会在单元测试期间将数据保存到数据库。执行工作的函数并不关心传入的内容,因为无论它是什么,它都实现了一个通用接口,您可以在合理的假设下执行它们的功能。
有很多很好的资源可用于了解有关IOC/DI模式的更多信息。这里有一对夫妇:
0
在最简单的方法,你的绑定(容器配置)需要知道的所有引用的类,它是在大多数情况下足够了。
如果它不是你的情况,一些IoC容器可以有多个绑定/配置。在StructureMap中,绑定名为Registry
,您可以指定包含多个注册表,甚至可以扫描指定目录中的库以动态包含所有注册表。我记得NInject也提供了从多个地方配置内核的可能性。
在这里我相信使用MEF并不会更好。您也必须共享项目之间的通用界面。而MEF是为了运行时的可组合性,当你不能在设计时组成系统的时候,如果我理解正确,这里就不是这种情况。
相关问题
- 1. 关于IoC的问题
- 2. 关于IoC的问题
- 3. Winforms和IoC/DI
- 4. 支持Compact Framework的IoC/DI容器
- 5. 与DI/IoC容器保持联系
- 6. 将MEF插件导入DI/IOC容器
- 7. DI/IoC容器性能基准比较?
- 8. 为什么MEF不是DI/IoC容器?
- 9. IoC和DI的功能
- 10. DI和IOC的例子
- 11. DI/IoC的MVC大会参考的问题和抽象
- 12. IOC/DI容器和子窗口创建困境
- 13. 有关接口和DI的问题?
- 14. 关于DI和SRP
- 15. 解决 “机器人腿” 问题与Spring IOC(DI)
- 16. INotifyPropertyChanged:AoP或IoC/DI?
- 17. 关于DI的问题以及如何解决一些问题
- 18. 用于.NET Framework 2.0的DI/IOC
- 19. 的IoC DI用于.NET核心身份
- 20. 关于SOLID原则,使用容器和Unity的DI:如何管理容器中的DI映射?
- 21. NServiceBus网关IOC和MessageHandler问题
- 22. DI容器和控制器
- 23. Windows移动应用程序中的IoC/DI容器
- 24. IoC容器可访问性
- 25. IoC和DI - 架构和实现示例
- 26. DI和IOC在spring mvc中的实现
- 27. 的IoC/DI在.NET/Java的
- 28. 验证我了解IoC,Ioc容器,DI和服务定位器之间的区别
- 29. ServiceStack IoC DI Design解决单独项目中的问题
- 30. 你如何处理IoC和DI的“深层”依赖关系?