我使用Swinject
來注入依賴關係,並且迄今爲止它的工作效果很好。但是現在我已經有了一個場景,其中我有一個ViewController
,它依賴於ViewModel
。 ViewModel
符合ViewModeling
協議,可以是兩種類型之一(都符合相同的協議,但具有深刻的不同行爲)。使用Swinject有條件地將ViewModel注入到ViewController中
我想弄清楚如何注入正確的ViewModel
(必須在運行時作出的決定)?
我發現我可以使用Container
通過name
登記每個ViewModel
的,然後使用name
區分哪個ViewModel
應注射,起初似乎是一個很好的解決方案 - 直到我發現我可以」牛逼實例化ViewController
的名稱(或者也許我已經錯過了嗎?)
我也想過我DependencyInjector
類暴露一個屬性,它會使用手動注入右01- 雖然它讓人感覺給我這種方法完全錯過了擁有自動依賴注入解決方案的重要性,並且迫使我用一些業務污染依賴注入器ogic代碼。
任何幫助或想法將不勝感激。
您是否在視圖控制器中使用SwinjectStoryboard?如果是這樣,你可以在故事板中使用'swinjectRegistrationName'屬性:https://github.com/Swinject/SwinjectStoryboard#registration-with-name –
我正在使用'SwinjectStoryboard',但你的建議意味着我必須保持兩個重複'ViewController's和每個人都會有一個不同的名字 - 這對我來說似乎是一個問題(ViewController中的每一個變化都意味着我必須記得更新這兩個副本) – goldengil