ASP.NET MVC Core – 逃避很久的依賴注入(Dependency Injection)

以前的程式會在 Controller 裡面 new ,即便使用了 interface ,仍無法完全不相依

依賴注入就是把他外移,由使用者決定傳入的實體 :

但這樣傳入實體就變成一件瑣碎的事。所以 MVC 5 時已經有許多工具可以協助處理 DI,如 Unity、autofac 等等,你可以只要設定傳入的實體,然後由程式自動幫你傳入。


HelloWorld

在專案建立一個 Services 資料夾,然後建立 HelloService 與 IHelloService

在 Core 裡面,可以直接在 Startup 裡面的 ConfigureServices 裡面進行註冊

在 HomeController 的建構子設定傳入 IHelloWorldService

建立 Hello Action ,裡面直接使用 IHelloWorldService

執行結果 : 

優點 : 

Controller 裡面都使用 interface ,降低耦合,所以可以更容易測試


Service 的生命週期

Transient : 每次注入都 new 一個新的

Scoped : 每次請求都 new 一個新的,同一個 Request 都是同一個實例

Singleton : 程式運行期間只會有一個實例

 

print

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *