Jam*_*mes 6 .net configuration dependency-injection ninject inversion-of-control
我正在努力找到找到我的Ninject配置"模块"(指定类型绑定的地方)的最佳位置.我希望我只是错过了一些明显的技巧,因为使用流畅的配置(因此Ninject)开始变成了一个交易破坏者:
在一个包含三个独立项目的简单Web堆栈中:Web,BusinessLogic,DataAccess.我不希望Web层必须直接引用DataAccess层,但我无法看到解决方法,因为:
如果我将DataAccess配置模块放在DataAccess层中,我必须引用DataAccess层,这样我就可以在Web层中实例化Ninject内核时访问配置模块
如果我将DataAccess配置模块放在Web层中,我必须引用DataAccess层才能访问我想要绑定的类型
如果我将DataAccess配置模块放在单独的配置项目中,那么在尝试为web和DataAccess层指定绑定时,我最终会遇到循环引用问题.
IOC的部分好处是允许松散耦合,但据我所知,使用Ninject需要我添加更多我目前拥有的直接项目引用.我错过了什么?
Ninject不要求引用程序集!您可以告诉它Kernel从程序集中加载与特定模式匹配的所有模块 - 请参阅Load()重载!使用此机制映射可以将您的功能公开为模块,就像@Daniel Marbach在实现每个功能的地方所建议的那样.我不喜欢这些定义程序集的每个绑定的巨大模块.我宁愿让每个人都在一个特定的小模块中用于某个功能.
这也允许在没有重新编译其他程序集的情况下启用/禁用/替换实现(至少在单独程序集中有接口的情况下).
所以基本上你有:
kernel.Load("*.dll")或类似地加载这些组件的模块.这样做的好处是:
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |