XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/09/20

Xamarin.Forms 在 PCL 中,判斷是否在除錯模式

在開發 PCL 專案內的程式碼,是無法使用任何 條件編譯式符號 ,要了解決這個問題,可以定義一個介面,並且在每個平台實作這個介面,最後,透過 Prism 的 Unity 的建構式注入方式,取得這個介面實作物件
  1. 在 PCL 中定義這個介面,這個介面僅有定義一個方法,回傳現在是否在除錯模式下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XFDoggy.Infrastructure
{
    public interface IDebugMode
    {
        bool IsDebugMode();
    }
}
  1. 在 Android 專案中,實作這個介面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using XFDoggy.Infrastructure;
using XFDoggy.Droid.Infrastructure;


[assembly: Xamarin.Forms.Dependency(typeof(DebugMode))]
namespace XFDoggy.Droid.Infrastructure
{
    public class DebugMode : IDebugMode
    {
        public bool IsDebugMode()
        {
#if DEBUG
            return true;
#else
            return false;
#endif
        }
    }
}
  1. 在 iOS & UWP 專案,如同上述 Android 程式碼,實作這個介面
  2. 回到 核心PCL專案中,使用建構式注入這個物件,並且判斷現在是否在除錯模式
        public LoginPageViewModel(INavigationService navigationService, IPageDialogService dialogService,
            IDebugMode debugMode)
        {
            _navigationService = navigationService;
            _debugMode = debugMode;
            _dialogService = dialogService;

            if (_debugMode.IsDebugMode() == true)
            {
                Account = "XXX";
                Password = "???";
            }
        }

沒有留言:

張貼留言