0

我在使用 XLabs.Platform 的 INetwork 时遇到问题。我收到 System.NullReferenceException。我不确定问题是否与我需要初始化 INetwork 的问题类似。但是,因为我对 Xamarin 很陌生,所以我不知道如何设置 IOC 容器。我想以一种完全跨平台的方式(如果可以避免的话,我想避免放置特定于平台的代码)。谢谢!!

代码:

using XLabs.Ioc;
using XLabs.Platform;
...
namespace XXX
{
   class XXX
    {
    public static bool isOnline()
    {

        var networkservice = DependencyService.Get<XLabs.Platform.Services.INetwork>();
        var status = networkservice.InternetConnectionStatus();
        return (
            (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaCarrierDataNetwork))
            || (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaWiFiNetwork))
            || (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaUnknownNetwork)));
    }

}

}

PS 使用 XLabs.Platform 的文档已过期。(显然)以前运行的可达性界面不再起作用。考虑改用这个是一种需要跨平台代码的方法。 不打算使用它,因为作者本人反对这种方法。

4

2 回答 2

1

如果您想检查是否有任何 Internet 连接,我建议使用连接插件(Xamarin 组件)。添加 Xaamrin 组件后,您可以检查是否可以从 PCL/共享项目中获得 Internet 连接,如下所示

if (CrossConnectivity.Current.IsConnected)
{ // Make API call here 
} 
else 
      DisplayAlert("Connectivity Issue", "Please Connect to a Network", "OK") ;
于 2016-04-28T15:26:29.577 回答
0

您可以通过添加此属性来填充 ioc:

[assembly: Xamarin.Forms.Dependency(typeof(NameOfClassImplementingAnInterface))]
于 2016-04-28T15:16:58.310 回答