使用 maui 在应用程序委托中注册依赖服务后应用程序崩溃了

问题描述 投票:0回答:1

将 Xamarin.Forms 迁移到面向 .NET 7 的 .NET Maui 时,我已在

appdelegate.cs
中使用 FinishedLaunching 方法注册了依赖项服务,但是在执行
HttpClient.GetAsync()
时,应用程序崩溃了。

如果我删除注册代码,则

HttpCient.GetAsync()
工作正常,但我收到有关依赖项服务方法的运行时错误。如何解决问题?

DependencyService.Register<IWorkService, WorkService>();
DependencyService.Register<ISalesService, SalesService>();

尽管

HttpCient.GetAsync()
处于 try-catch 下,但它没有捕获异常或 httprequestException。它在 UIApplication.Main
 中抛出 
nullreferenceexception

c# xamarin.ios maui .net-7.0
1个回答
0
投票

关于在MAUI中使用依赖服务,可以参考davidbritch的评论

DependencyService
最终会起作用,纯粹是为了提供一个简单的 Xamarin.Forms 到 .NET MAUI 的升级路径。然而,这不会是 在平台上调用代码的最佳方式。

.NET MAUI 方法是使用分部类。这个想法是在 您将调用

GetString
的跨平台代码,并放置您的平台 在 Platforms > Android 中作为部分类实现, 平台 > iOS(等)文件夹。多目标将照顾 其余的(仅编译iOS的GetString方法,Android的 Android 等的 GetString 方法)。

这是代码示例

此外,您还可以检查这种情况的答案:MAUI: DependencyService.Get() return null.

© www.soinside.com 2019 - 2024. All rights reserved.