簡體   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