代码之家  ›  专栏  ›  技术社区  ›  Christian

如何在Xamarin上创建一个函数,根据平台的不同来执行不同的操作?

  •  0
  • Christian  · 技术社区  · 7 年前

    我是Xamarin的新手,正在为Android、iOS和UWP开发一个应用程序。目前,我想做一些不幸的事情,在每个平台上都不同于由crossplatform Xamarin.forms调用的ViewModel。

    2 回复  |  直到 7 年前
        1
  •  4
  •   FCin    7 年前

    有一个服务叫做 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

        2
  •  1
  •   Arvind Chourasiya    7 年前

    这应该是你的 if else 你的声明 ViewModel 基于的类 Platform . 你可以再加一个 其他的 UWP

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

    还有一种方法是使用 Xam.Plugin.DeviceInfo设备信息

    using Plugin.DeviceInfo;

    得到 站台

    CrossDeviceInfo.Current.Platform.ToString();
    
    推荐文章