Xamarin Forms 調用各平臺代碼

Xamarin

不一樣平臺的運行代碼

有時候須要在不一樣的平臺上,運行不一樣的代碼,下面就看是說明這個需求怎麼實現。ui

在共享的目錄中處理邏輯spa

Xamarin.Forms中,有這些指令能夠使用:#if, #elif, and endif.來看一下代碼code

#if __IOS__
using UIKit;

#elif __ANDROID__
using Android.OS;

#elif WINDOWS_APP || WINDOWS_PHONE_APP || WINDOWS_UWP
using Windows.Security.ExchangeActiveSyncProvisioning;

#endif

這就是一個完整的體系,這些指令不止做用於開頭,類裏面也是能夠使用的。orm

使用各個平臺的共同類

若是要實如今不一樣平臺調用不一樣平臺的類,則須要在每一個平臺的工程上都要新建一個共同類,類名、方法和命名空間,要徹底一致。接口

Xamarin Formsstring

PlatformInfo platformInfo = new PlatformInfo();

IOSit

using System;
using UIKit;

namespace PlatInfoSap2
{
    public class PlatformInfo
    {
        UIDevice device = new UIDevice();

        public string GetModel()
        {
            return device.Model.ToString();
        }

        public string GetVersion()
        {
            return String.Format("{0} {1}", device.SystemName, 
                                            device.SystemVersion);
        }
    }
}

Androidio

using System;
using Android.OS;

namespace PlatInfoSap2
{
    public class PlatformInfo
    {
        public string GetModel()
        {
            return String.Format("{0} {1}", Build.Manufacturer, 
                                            Build.Model);
        }

        public string GetVersion()
        {
            return Build.VERSION.Release.ToString();
        }
    }
}

第二種方式使用各個平臺的類

一個庫一般不能訪問應用程序項目中的類,那麼咱們是能夠使用DependencyService類來調用,各個平臺的方法。form

怎麼作?class

1.在Xamarin Forms平臺上建立一個接口,讓各個平臺來實現該接口

2.每一個平臺實現了該接口後,必須註冊在Dependency屬性上

3.在Xamarin Forms中,使用DependencyService類的Get方法就能夠調用了

代碼

IPlatformInfo platformInfo = DependencyService.Get<IPlatformInfo>(); 
modelLabel.Text = platformInfo.GetModel();
versionLabel.Text = platformInfo.GetVersion();
相關文章
相關標籤/搜索