将 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
关于在MAUI中使用依赖服务,可以参考davidbritch的评论:
最终会起作用,纯粹是为了提供一个简单的 Xamarin.Forms 到 .NET MAUI 的升级路径。然而,这不会是 在平台上调用代码的最佳方式。DependencyService
.NET MAUI 方法是使用分部类。这个想法是在 您将调用
的跨平台代码,并放置您的平台 在 Platforms > Android 中作为部分类实现, 平台 > iOS(等)文件夹。多目标将照顾 其余的(仅编译iOS的GetString方法,Android的 Android 等的 GetString 方法)。GetString
这是代码示例。
此外,您还可以检查这种情况的答案:MAUI: DependencyService.Get() return null.