Xamarin.Forms中DependencyService的使用

Posted Devin.Zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xamarin.Forms中DependencyService的使用相关的知识,希望对你有一定的参考价值。

Xamarin.Forms中DependencyService的使用

在Xamarin.Forms中,我们经常会根据各个平台的特性特殊处理一些需求,比如:读取应用的版本号。

在此也以读取应用版本号为例,练习DependencyService用法:

创建IPlatformInfoService接口:

技术分享图片
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 namespace XFPractice.Service
 6 {
 7     public interface IPlatformInfoService
 8     {
 9 
10         /// <summary>
11         /// 获取应用版本
12         /// </summary>
13         /// <returns></returns>
14         string GetAppVersion();
15         
16     }
17 }
View Code

android创建ImpDroidService实现IPlatformInfoService接口:

技术分享图片
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 using Android.App;
 7 using Android.Content;
 8 using Android.Content.PM;
 9 using Android.OS;
10 using Android.Runtime;
11 using Android.Views;
12 using Android.Widget;
13 using Xamarin.Forms;
14 using XFPractice.Service;
15 
16 
17 [assembly: Dependency(typeof(XFPractice.Droid.ImpService.ImpDroidService))]
18 namespace XFPractice.Droid.ImpService
19 {
20     public class ImpDroidService: IPlatformInfoService
21     {
22         public string GetAppVersion()
23         {
24             var context = Android.App.Application.Context;
25             var packageInfo = context.PackageManager.GetPackageInfo(
26                 context.PackageName, PackageInfoFlags.Configurations);
27             return packageInfo.VersionName;
28         }
29     }
30 }
View Code

ios创建ImpiOSService实现IPlatformInfoService接口:

技术分享图片
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 using Foundation;
 7 using UIKit;
 8 using Xamarin.Forms;
 9 using XFPractice.Service;
10 
11 
12 [assembly: Dependency(typeof(XFPractice.iOS.ImpService.ImpiOSService))]
13 namespace XFPractice.iOS.ImpService
14 {
15     public class ImpiOSService : IPlatformInfoService
16     {
17         public string GetAppVersion()
18         {
19             var version = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion");
20             return version.ToString();
21         }
22     }
23 }
View Code

使用:

1  private readonly IPlatformInfoService _platformService;           
2  
3  _platformService = DependencyService.Get<IPlatformInfoService>();
4             
5  var AppVersion = _platformService.GetAppVersion();

这样我们就能读取到App的版本了。

以上是关于Xamarin.Forms中DependencyService的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色

Xamarin.Forms:Forms.Context 已过时

Xamarin.Forms 手势密码实现

在 xamarin.forms 中应用动画

ScrollView 问题中的 Xamarin.Forms 捏手势

在 Xamarin.Forms 中编写设备平台特定代码