如何在组件中使用Ninject
我可以看到类似的问题之前已经被问到过,但是对于DI和.Net来说我完全陌生,我无法掌握整个解决方案,或者可能找不到合适的源代码....
WebAPI具有应用程序开始部分,因此我可以使用它来初始化Ninject内核并为WebAPI项目注册依赖项。
我怎样才能达到BL和其他议会的相同?
有几种不同的方式,您可以使用Ninject惯例自动将每个ISomething
解析为具有相同名称的实现(例如IThing
- > Thing
),或者您可以在每个注册依赖关系的程序集中创建Ninject模块BL中的模块可以将模块加载到DL中)。
你采取的方法取决于你是否需要为不同的对象定义不同的作用域,例如,如果你想将某些事情解决为可能影响你使用哪种方法的单例。
我认为Mark Seemann对此的建议非常好 - 在应用程序的最高层创建一个组合根。 对于Web应用程序,这意味着在Globals.asax文件中。 我可以详细说明这一点的好理由,但是链接的博客文章做得更好。
这确实会打破您尝试实现的分层,但只是勉强,而我认为这是一种恰当的方式。 如果你的网页图层非常薄(例如,你可以很容易地用厚客户端替换它),那么这不是一个大的损失。 如果您真的对此不利,您可以在DL中为BL创建组合根。
链接地址: http://www.djcxy.com/p/11353.html