我是Unity IoC的新手(一般是DI)并且已经阅读了很多文档,并在第9频道观看了几个小时的视频。即使在所有这些之后,我也没有找到任何示例中显示了要查找的功能集。
在线的所有内容都显示您可以创建存储库,并使用统一容器注册它。然后我可以将存储库注入我的视图模型构造函数中。在我的特定应用程序中,我需要支持ParseCloud,Box,DropBox和OneDrive,以及多个接口实现。所以我计划创建四个存储库,每个服务一个。
让Unity注册单个抽象存储库工厂更有意义,视图模型可以根据应用程序的配置来获取正确的存储库吗?
app(任务应用程序)支持的另一件事是ITask的多个实现,所以我有一个BasicTask,GTDTask,GoogleTask。所以我想我需要一个可以处理每个实现的存储库方法,并将实现存储在正确的云服务中。如何使用Unity实现这种抽象?是否最好只注册所有ITask类型,并根据用户登录的服务确定哪个类型属于哪个存储库?
我想让页面视图模型独立于任务实现。我将使用将其目标类型分配给特定任务类型的DataTemplates。因此,UI可以保持松散耦合,并且我的视图模型与我的所有存储库或实现都没有紧密耦合。
感谢您的帮助。
乔纳森
答案 0 :(得分:0)
注册实施而非工厂。视图模型永远不应该触及存储库。控制器使用存储库来获取或更新模型并将其提供给视图模型