Xamarin.Forms DependencyService 始终返回 null
Posted
技术标签:
【中文标题】Xamarin.Forms DependencyService 始终返回 null【英文标题】:Xamarin.Forms DependencyService always returns null 【发布时间】:2016-08-30 07:35:14 【问题描述】:嘿嘿,
我正在尝试使用依赖服务从原生 ios 项目加载一些数据。
这是一项简单的任务,我试图反序列化我之前保存的一些数据,但无论我做什么总是返回 null。
如果我在 iOS 项目中使用调试器检查值,它们永远不会为空。 很奇怪,也许我错过了什么......
我的接口实现:
[assembly: Xamarin.Forms.Dependency(typeof(SaveRead))]
namespace LindeXF.iOS
public class SaveRead : ISaveRead
public async Task<ApplicationModel> LoadApplicationModel(string userName)
try
var userPath = CreatePathJson(userName);
if (File.Exists(userPath))
await Task.Run(() =>
using (var file = File.OpenText(userPath))
var serializer = new JsonSerializer();
var m = (ApplicationModel) serializer.Deserialize(file, typeof(ApplicationModel));
);
catch (Exception ex)
throw new Exception(ex, "LoadApplicationModel()");
return new ApplicationModel Username = userName;
在便携式项目中
DependencyService = Xamarin.Forms.DependencyService.Get<ISaveRead>();
var s = await ApplicationModel.DependencyService.LoadApplication(userName);
感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:怀疑你是从依赖服务调用方法LoadApplication
。
var s = await ApplicationModel.DependencyService.LoadApplication(userName);
方法声明是LoadApplicationModel
。
public async Task<ApplicationModel> LoadApplicationModel(string userName)
也许这就是问题所在?尝试使用以下代码进行调用:
var data = await DependencyService.Get<ISaveRead>()
.LoadApplicationModel(userName);
【讨论】:
感谢您的回答,但这是我的错,我将错误的函数复制到 *** 中。我是这样打电话的:)我说得对,我检查了所有内容 100 次:) 啊,好吧...我认为它是因为您正在内部运行的等待任务...您正在使用断点进行调试? .如果是,那么您将获得价值,因为您为任务完成提供了时间延迟..【参考方案2】:首先您反序列化文件内容并将 ApplicationModel 对象存储在 m
中。
using (var file = File.OpenText(userPath))
var serializer = new JsonSerializer();
var m = (ApplicationModel) serializer.Deserialize(file, typeof(ApplicationModel));
看起来一切都很好,但不是返回 m
,而是创建一个新的 ApplicationModel 对象并返回它。
return new ApplicationModel Username = userName;
我认为你应该像这样(例如)返回m
:
using (var file = File.OpenText(userPath))
var serializer = new JsonSerializer();
var m = (ApplicationModel) serializer.Deserialize(file, typeof(ApplicationModel));
m.Username = userName;
return m;
【讨论】:
感谢您的宝贵时间,但我已经解决了这个问题,问题仍然存在以上是关于Xamarin.Forms DependencyService 始终返回 null的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms:Forms.Context 已过时
Xamarin.Forms 和 Xamarin Native 有啥区别? [关闭]
如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色
Xamarin Forms Prism:prism ResourceDictionary 中已存在具有键“Xamarin.Forms.NavigationPage”的资源
Xamarin.Forms.Forms.Init(e) Onlaunched 中的 FileNotFoundExeception