我使用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