2017-05-23 54 views
-1

我很困惑DI。我见过很多解释DI的文章都可以使用构造函数实现,并且一些文章提到了使用ninject的DI。所以我无法理解使用ninject。如果ninject不存在,那么代码也会工作。你能解释一下使用ninject的好处吗?DI使用Ninject

回答

3

报价Darin Dimitrov

什么是使用Ninject提供了我,我不能只是 以下松耦合的基本原理呢?在Composition Root

    • 少行代码来处理你的对象的标准集装箱的使用寿命期
    • 注射在特定的环境下,比如经典的WebForms许多插件,ASP.NET MVC,ASP.NET的Web API
    • 可能性自动处置您的IDisposable对象
    • ...

    你笑万物否则应手动处理。这就是说,DI框架并不重要。它应该很快,并提供您的应用程序所需的特定功能。但是,DI框架绝对不应以松散耦合的方式影响您设计代码和应用程​​序中不同层的方式(对接口和抽象类进行编程以削弱应用程序不同层之间的耦合)。

    因此,将DI框架视为仅在您的应用程序的Composition Root中进行干预的框架,并且您可以用一个不同的框架或者手动处理对象生命周期来替代。

    例如,您在问题中显示的代码非常糟糕,因为它将图层与特定的DI框架关联。这个属性在那里就像癌症一样。这意味着您的应用程序代码依赖于特定的DI框架。

    另外我建议你阅读这个book

  • +1

    A [该书的第二版](https://www.manning.com/seemann2/)目前正在制作中,第3章即将发布。 – Steven