C# UWP MVVM Template10:跨应用程序访问外部API的单个实例
我的任务是通过模板10使用MVVM接管一个部分开发的大型复杂UWP应用程序。该应用程序需要使用内部开发的WebServicesAPI,这几乎需要用于每个功能,从初始登录页面开始 既然我需要在任何地方访问一个API实例,我该如何正确地进行访问呢?我曾经使用过MVVM,但从未使用过Template10,也从未在整个MVVM UWP应用程序中共享过对象的实例 到目前为止,我可以想到三种方法:C# UWP MVVM Template10:跨应用程序访问外部API的单个实例,c#,mvvm,uwp,template10,uwp-navigation,C#,Mvvm,Uwp,Template10,Uwp Navigation,我的任务是通过模板10使用MVVM接管一个部分开发的大型复杂UWP应用程序。该应用程序需要使用内部开发的WebServicesAPI,这几乎需要用于每个功能,从初始登录页面开始 既然我需要在任何地方访问一个API实例,我该如何正确地进行访问呢?我曾经使用过MVVM,但从未使用过Template10,也从未在整个MVVM UWP应用程序中共享过对象的实例 到目前为止,我可以想到三种方法: 在Appl.xaml.cs中声明并实例化API实例,并全局使用 创建公共Globals类并将实例作为公共静态属
c#
公共类全局
{
私有静态OurAPI_OurAPI;
公共静态API
{
获取{return\u ourAPI;}
设置{u ourAPI=value;}
}
}
编辑:很抱歉代码没有格式化,编辑框的格式可以,但当我保存它时,它会返回到一个长句:-(最好的解决方案包括服务和/。这是一个相当复杂的主题,因此我绝对鼓励从多个来源阅读它 总之,首先为服务创建一个接口,在其中声明所有公共成员和方法。然后创建接口的实现。然后使用IoC容器并将服务注册为单实例(单实例)然后集成IoC,以便它创建视图模型的实例。然后,您可以将接口作为视图模型的构造函数参数,IoC容器将确保提供您注册的单例实例 在您的情况下,您使用的模板10可以与不同的IoC容器集成,如图所示。请以IoC容器为例进行检查。您可以在文档中看到一些注册和解析服务的示例 对于一般的解决方案,请查看这篇演示在UWP中使用AutoFac的文章 您还可以在中看到一些代码示例,特别是模板10的代码示例
此解决方案优于使用
静态
和全局实例,因为您从未实际处理任何硬编码引用,而且实际上总是针对接口工作。您将接口作为构造函数的参数,IoC将负责为您提供实例。此外,您可以随时交换不同类的接口实现,您只需在一个位置(IoC注册)对其进行更新。非常感谢Martin的支持,看起来我有一些阅读和实验要做!