我应该在哪里使用Ninject 2+进行注射(以及如何安排模块?)
我有两个相关的(对这个问题)项目和其他几个项目的解决方案;
我的问题基本上是我应该在哪里与Ninject 2进行IoC,考虑...
我在这里画了一个心理角落,因为我只看到了三个选项。 类库中的DI,网络应用程序中的DI,或两者都有,但每个都有问题:
有没有人有一些“最佳实践”或指导如何做这样的事情? 我无法想象我是第一个在这种情况下结束的人,并且知道什么是“正确”的方式来做到这一点很好。
谢谢!
我不知道NInject,但除非它与Windsor,StructureMap等大不相同,否则答案会保持不变,因为有一些常见的DI模式。 考虑到这一点:
首先要意识到的是,DI不受特定框架(如NInject或Windsor)的束缚。 这是一套遵循的技术和设计模式。 您可以使用所谓的Poor Man's DI手动进行DI,但显然DI Container更好。
为什么这是相关的? 这是相关的,因为一旦你意识到这一点,推论就是绝大多数你的应用程序的代码应该不知道DI容器什么。
那么你在哪里使用DI容器? 它应该只用于组合根 ,在你的情况下它将对应于Global.asax。 在这个SO答案中,你可以更多地了解这个问题 - 尽管这个问题是关于温莎的,但其原理仍然是一样的。
那么你的单元测试呢? 他们应该完全不了解DI容器。 有关更多详细信息,请参阅其他SO答案。
大量使用构造函数注入可以在您的库中实现DI。 您不需要参考任何DI容器来做到这一点,但如果使用DI容器来解析来自Composition Root的所有依赖关系,它会使生活变得更容易。
链接地址: http://www.djcxy.com/p/77775.html上一篇: Where should I do Injection with Ninject 2+ (and how do I arrange my Modules?)
下一篇: Is there a pattern for initializing objects created via a DI container