Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与存储库的统一_C#_Wpf_Unity Container_Ioc Container - Fatal编程技术网

C# 与存储库的统一

C# 与存储库的统一,c#,wpf,unity-container,ioc-container,C#,Wpf,Unity Container,Ioc Container,我是统一国际奥委会(一般来说是DI)的新成员,读了很多文件,在第9频道看了几个小时的视频。即使在所有这些之后,我也没有找到任何示例来演示查找中的功能集 所有在线内容都表明,您可以创建一个存储库,并使用unity容器注册它。然后,我可以将存储库注入到视图模型构造函数中。在我的特定应用程序中,我需要支持ParseCloud、Box、DropBox和OneDrive,以及接口的多种实现。所以我计划创建四个存储库,每个服务一个 让Unity注册一个抽象存储库工厂更有意义吗?视图模型可以使用该工厂根据应用

我是统一国际奥委会(一般来说是DI)的新成员,读了很多文件,在第9频道看了几个小时的视频。即使在所有这些之后,我也没有找到任何示例来演示查找中的功能集

所有在线内容都表明,您可以创建一个存储库,并使用unity容器注册它。然后,我可以将存储库注入到视图模型构造函数中。在我的特定应用程序中,我需要支持ParseCloud、Box、DropBox和OneDrive,以及接口的多种实现。所以我计划创建四个存储库,每个服务一个

让Unity注册一个抽象存储库工厂更有意义吗?视图模型可以使用该工厂根据应用程序的配置获取正确的存储库

该应用程序(任务应用程序)支持的另一件事是ITask的多个实现,因此我有一个基本任务、GTDTask和GoogleTask。所以我想我需要一个存储库方法来处理每个实现,并将实现存储在正确的云服务中。我如何通过统一实现这种抽象?最好只注册所有的ITask类型,并让一个抽象存储库根据用户登录的服务确定哪个类型属于哪个存储库

我希望保持页面视图模型独立于任务实现。我将使用将其目标类型分配给特定任务类型的数据模板。因此,UI可以保持松散耦合,并且我的视图模型不会与我的所有存储库或实现紧密耦合

谢谢你的帮助


Johnathon

注册实施而不是工厂。视图模型不应触及存储库。控制器使用存储库获取或更新模型,并通过控制器将其提供给视图模型

“我假设您引用的是mvc?”?我正在使用mvvm和WPF。这有什么区别吗?没有哪个mvvm能从控制器中获益匪浅。我发现的mvvm的最佳实现是model=>businessobject,controller用命令和初始值填充视图模型等。视图模型只是ui需要的东西,因此需要为按钮收集数据和命令。不需要控制器,但它们有助于代码重用。我假设将有多个视图,您可以在其中看到相同的对象。让一个控制器向每个控制器提供相同的命令可以减少测试和编码工作量。您的控制器类将通过向委托命令传递工作对象(如控制器上的更新项)和指示命令何时激活的方法来创建委托命令。我仍然不确定是否遵循抱歉。视图被数据绑定到视图模型,VM是否有对控制器对象的引用?否,我将从控制器引用VM。从控制器实例化所需的VM,并在构造函数中传递所需的项