簡單介紹di注入
c#di 注入有三種生命週期,Transient,Scoped,Singleton,如下表所述 生命週期 描述 使用時機 Transient 每次注入都會建立一個新的實例。 適用於輕量級且無狀態的服務。 Scoped 從 request 進來到回傳 response 期間每次注入都是共用相同得實例 適用於需要在單一請求中共用狀態的服務,例如資料庫上下文。 Singleton 當應用程式服務啟動時,只會建立一個實例,直到該服務關閉 適用於需要在應用程式中共用狀態的服務。 個別的使用時機是什麼時候? Transient:適用於輕量級且無狀態的服務,例如寄信服務。 Scoped:適用於需要在單一請求中共用狀態的服務,例如資料庫上下文。一般使用三層架構時,Controller、Service 和 Repository 通常會使用 Scoped。 Singleton:適用於需要在應用程式中共用狀態的服務,例如配置設定或日誌記錄。連線字串也應該使用 Singleton 生命週期,確保在應用程式的整個生命週期內是唯一且一致的。 為什麼要用 DI 注入 依賴注入(Dependency Injection, DI)是一種設計模式,用於實現對象之間的鬆耦合。使用 DI 有以下幾個好處: 解耦:DI 使得類之間的依賴關係變得明確,減少了類之間的耦合度。這樣可以更容易地替換和測試各個組件。 可測試性:通過 DI,可以輕鬆地將依賴項替換為模擬對象(Mock),從而進行單元測試。這使得測試變得更加簡單和可靠。 可維護性:DI 使得代碼結構更加清晰,依賴關係更加明確,從而提高了代碼的可維護性。當需要修改某個依賴項時,只需修改注入的配置,而不需要修改使用該依賴項的代碼。 可重用性:通過 DI,可以將通用的依賴項提取出來,實現代碼的重用。這樣可以減少重複代碼,提高開發效率。 靈活性:DI 允許在運行時動態地注入依賴項,從而提高了應用程式的靈活性和可配置性。