您如何在Xamarin上创建一个功能,该功能根据平台而有所不同?

时间:2018-11-05 11:34:28

标签: android ios xamarin xamarin.forms uwp

我是Xamarin的新手,并且正在为Android,iOS和UWP开发一个应用程序。目前,我想做的事情不幸的是,在跨平台Xamarin.forms调用的ViewModel上,每个平台上的工作方式都不同。

如何根据该ViewModel创建一个函数或类,该函数或类根据当前构建的平台运行不同的Platform特定代码?

2 个答案:

答案 0 :(得分:4)

有一个名为DependencyService的服务,该服务可让您注册接口的多个实现,并根据当前环境自动返回正确的实现。

您在普通项目中定义界面,例如:

public interface IPrinter
{
    void Print();
}

然后在每个项目中创建不同的实现。您还必须使用[assembly(typeof(YOUR_CLASS_NAME))]属性对其进行标记。

[assembly:Dependency(typeof(AndroidPrinter))]
namespace MyApp.Android
{
    public class AndroidPrinter : IPrinter
    {
        public class Print()
        {
        }
    }
}

然后在您的普通项目的ViewModel中,您可以调用:

public void ViewModelFooMethod()
{
    DependencyService.Get<IPrinter>().Print();
}

有关它的更多信息here

答案 1 :(得分:1)

这应该是您基于if的{​​{1}}类中的else ViewModel语句。您可以附加一个Platform默认的else

UWP

还有一种获取方法是使用NuGet软件包管理器中的 Xam.Plugin.DeviceInfo 软件包。导入

if (Device.RuntimePlatform == Device.iOS) { //ios } else if (Device.RuntimePlatform == Device.Android) { //android }

获取using Plugin.DeviceInfo;信息

Platform
相关问题