2016-04-28 82 views
0

我在使用來自XLabs.Platform的INetwork時遇到問題。我得到System.NullReferenceException。我不確定問題是否類似於我需要初始化INetwork的this。但是,因爲我對Xamarin非常陌生,所以我不知道如何設置IOC容器。我希望以完全跨平臺的方式來實現這個目標(如果我能夠避免的話,我想避免使用特定於平臺的代碼)。謝謝!!如何在Xamarin Forms XLabs中使用INetwork?

代碼:

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的文檔已過時。 (顯然)以前的功能Reachability界面不再工作。考慮使用this代替。 This是一種需要跨平臺代碼的方法。因爲作者本人對此方法不屑一顧。

回答

1

如果你想檢查是否有任何Internet連接,我會建議使用Connectivity Plugin(Xamarin組件)。添加Xaamrin組件後,您可以檢查互聯網連接是否可以從PCL /共享項目中獲得,如下所示

if (CrossConnectivity.Current.IsConnected) 
{ // Make API call here 
} 
else 
     DisplayAlert("Connectivity Issue", "Please Connect to a Network", "OK") ; 
+0

這就是我所做的 – heights1976

0

您可以通過添加此屬性填補國際奧委會:

[assembly: Xamarin.Forms.Dependency(typeof(NameOfClassImplementingAnInterface))]