繁体   English   中英

使用MvvmCross在Xamarin中进行条件编译

[英]Conditional Compilation in Xamarin using MvvmCross

我是xamarin和MvvmCross框架的新手。 我目前正在为Android,Windows Phone和iOS创建一个多平台应用程序。 我目前在找出应用运行在哪个平台上时遇到问题。

我想做的是在app.cs文件中包含一个if语句。 我想检查这是否是iOS应用程序,然后执行操作,否则执行此操作。 但是我还没有找到执行此操作的任何好方法,而且我什至不知道可以在此文件中完成此操作

到目前为止,这是我的代码:

using Cirrious.CrossCore;
using Cirrious.CrossCore.IoC;
using Cirrious.MvvmCross.ViewModels;
using tax.Mobile.Core.Interfaces;
using tax.Mobile.Core.Logic;strong text
namespace tax.Mobile.Core
{
public partial class App : MvxApplication
{
    public override void Initialize()
    {
        CreatableTypes()
            .EndingWith("Service")
            .AsInterfaces()
            .RegisterAsLazySingleton();

#if (__iOS__) 
        RegisterAppStart<ViewModels.FirstViewModel>();
#else
            RegisterAppStart<ViewModels.SearchViewModel>();
#endif
        Mvx.RegisterType<IWebService, MockWebService>();     
    }

}
}

谢谢!

如果PCL库在项目属性中使用自己的符号编译或由#define SYMBOL语法定义,则将无法使用。

若要选择开始屏幕,可以使用App构造函数和Setup.CreateApp方法

1)在PCL中使用平台选项创建枚举

public enum OS
{
  Droid, Touch, WinPhone, WinStore, Mac, Wpf
}

2)在您的App类构造函数中使用此枚举值

public App (OS os)
{
    _os = os;
}

public override void Initialize()
{
    /*...*/

    switch(_os)
    {
        case OS.Touch:
            RegisterAppStart<ViewModels.FirstViewModel>(); break;
        default:
            RegisterAppStart<ViewModels.SearchViewModel>();
    }

    /*...*/
}

3)通过Setup.CreateApp()方法将当前操作系统传递给App

{
    return new.Core.App(OS.Droid)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM