我对DI很困惑。我已经看到很多文章解释DI可以使用构造函数实现,一些文章提到DI使用ninject。所以我无法理解ninject的用法。如果ninject不存在那么代码也会工作。你能解释一下使用ninject的优势吗?
答案 0 :(得分:3)
引用
Darin Dimitrov
使用Ninject为我提供的是我无法做到的 遵循松散耦合的基本原则?
Composition Root
您应该手动处理的所有事情。话虽如此,DI框架并不重要。它应该很快,并提供您的应用程序所需的特定功能。但DI框架绝对不会以松散耦合的方式影响应用程序设计代码和应用程序中不同层的方式(针对接口和抽象类进行编程以削弱应用程序不同层之间的耦合)。 / p>
因此,将DI框架视为仅在应用程序的组合根中进行干预的内容,以及可以在一眨眼间用不同的框架替换甚至手动处理对象生命周期的框架。
例如,您在问题中显示的代码非常糟糕,因为它将您的图层绑定到特定的DI框架。这个[Inject]
属性就像癌症一样。这意味着您的应用程序代码依赖于特定的DI框架。
我还建议你阅读book。