可以动态模型注射吗?换句话说,如果我要求IPhotoModel类型的模型,我应该根据视图的当前状态获得其中一个实现。如果我正在查看UserPage,我应该获得该模型的用户特定实现。如果我正在查看LocationPage,我应该获得特定于位置的实现。
目前,我看到的唯一方法是引入一个指定模型映射的命令,具体的基于当前视图状态...
类似......
injector.mapValue(IPhotoViewModel,injector.getInstance(UserPhotoViewModel))或 injector.mapValue(IPhotoViewModel,injector.getInstance(LocationPhotoViewModel))
这是最好的方法吗?我真的不想在上下文之外引入很多耦合逻辑,但是......
答案 0 :(得分:2)
我就是这样做的,我相信这是推荐的方式。实际上,我认为许多高级RobotLegs用户会将大多数映射分解为命令,以方便,重用,并使程序更容易阅读 - 即使Command只在启动时运行一次。我已经将它用于交换真实服务的模拟服务之类的东西 - 映射依赖项的命令是不同的,但其他一切都是相同的。
我不认为这是“那么多”耦合逻辑。 Command只是根据当前的Application状态设置程序。使用Command更改Injector状态与您自己的自定义Model状态之间没有太大区别。
您甚至可能发现可以跨应用程序重用注入映射命令,而您可能无法重用整个上下文。
HTH;
艾米