gpt4 book ai didi

Xamarin.Forms DependencyService 不适用于所有平台

转载 作者:行者123 更新时间:2023-12-02 17:09:30 24 4
gpt4 key购买 nike

docs明确指出您需要针对所有平台的实现:

You must provide an implementation in every platform project. If no Interface implementation is registered, then the DependencyService will be unable to resolve the Get<T>() method at runtime.

我没有提供实现,所以应用程序崩溃了。但是在这种情况下我应该怎么做,我不需要那个平台的实现?提供这样的无体方法?

public void HideKeyboard()
{
// We need an implementation for the DependencyService, even it is empty.
}

我是否应该提供实现?

public void HideKeyboard()
{
try
{
InputPane myInputPane = InputPane.GetForCurrentView();
myInputPane.TryHide();
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}

或者是使用DependencyService这里的选项错误?

最佳答案

我假设您不需要在一个平台上实现,但需要在另一个平台上实现。

基本上您可以做两件事:

  • 在您不需要实际实现的平台上提供无主体实现,就像您自己建议的那样
  • 或;检查 DependencyService 调用周围的平台。

如果您只在 iOS 上需要它,只需在您的共享代码中这样做:

if (Device.RuntimePlatform == Device.iOS)
DependencyService.Get<IKeyboardService>().HideKeyboard();

这样您就不会在代码中乱放冗余类。您确实需要在要执行此代码的所有 位置添加它。因此,更好的选择取决于您。

使用 DependencyService 并没有错,实际上是实现这种平台特定功能的唯一方法。

关于Xamarin.Forms DependencyService 不适用于所有平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49979619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com