你如何Xamarin创建的东西不同,具体取决于该平台上做了功能?(How do you create

2019-10-29 08:20发布

我是新来Xamarin和我开发一个应用程序的Android,iOS和UWP。 目前,我想要做的事,不幸的是工作不同每个平台上从那个年代由跨平台Xamarin.forms称为视图模型。

如何创建从取决于当前构建平台上运行不同的平台特定代码视图模型一个函数或类?

Answer 1:

有一个叫服务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()
        {
        }
    }
}

然后在你的共同项目,在视图模型,您可以拨打:

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

更多关于它在这里



Answer 2:

这应该是你的if else在你的发言ViewModel基于类的Platform 。 您可以附加一个以上else块,这将是默认UWP

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

另一种方式是在那里得到它是通过使用Xam.Plugin.DeviceInfo包从NuGet包管理器。 进口

using Plugin.DeviceInfo;

获取Platform这样的信息

CrossDeviceInfo.Current.Platform.ToString();


文章来源: How do you create on Xamarin a function that does something differently depending on the platform?