我在使用Munq作爲MVC3項目中的DI容器。我有一個從存儲庫中檢索DTO的服務層。根據該DTO中的屬性,我需要使用兩種策略之一在DTO上執行計算。我可以在容器中註冊一個指定類型,例如C#依賴注入和策略模式
Container.Register<ICalculation>("Type1", c => new Type1Calculation);
Container.Register<ICalculation>("Type2", c => new Type2Calculation);
然後,當試圖實例化適當的策略時,我可以直接引用容器。
var calc = Container.Resolve<ICalculation>(dto.ServiceType);
但是,這使我對容器本身的依賴關係與相關的耦合和測試問題。我需要傳遞到服務構造函數中,以使我能夠正確計算但不依賴於容器?我應該傳遞一個工廠,所以依賴關係在工廠而不在服務類中?
作爲更新上述情況,我目前使用和推薦SimpleInjector https://simpleinjector.org爲DI 。一些優秀的背景信息可在https://cuttingedge.it/blogs/steven/pivot/entry.php?id=91 – 2015-08-09 20:43:28