2017-05-23 53 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