如何跨程序集使用Ninject

use*_*363 7 c# ninject

我可以看到之前已经问过类似的问题,但对DI和.Net来说是全新的我无法掌握整个解决方案或者可能找不到合适的来源....

  • 我有程序集WebAPI,BL,DL.
  • WebAPI依赖于BL,
  • BL依赖于DL,
  • WebAPI没有引用DL,我想保持相同.还有更多的装配,但这足以说明问题.

WebAPI具有应用程序启动部分,因此我可以使用它来初始化Ninject内核并为WebAPI项目注册依赖项.

如何为BL和其他组件实现相同的目标?

Tre*_*ley 3

有几种不同的方法,您可以使用Ninject 约定自动将每个实现解析为具有相同名称(例如-> )ISomething的实现,或者您可以在每个程序集中创建一个注册依赖项的Ninject 模块(您的程序集中的模块) BL 可以在您的 DL 中加载该模块)。IThingThing

您采取的方法取决于您是否需要为不同的对象定义不同的范围,例如,如果您希望将某些事物解析为单例,这可能会影响您使用的方法。