コード例 #1
0
        /// <summary>
        /// 実施可能状態を共有する非同期実行コマンドを作成する。
        /// </summary>
        /// <typeparam name="T">コマンドパラメータ型。</typeparam>
        /// <param name="sharedExecutable">実行可能状態共有オブジェクト。</param>
        /// <param name="executer">非同期処理デリゲート。</param>
        /// <returns>非同期実行コマンド。</returns>
        protected ICommand MakeSharedAsyncCommand <T>(
            IReactiveProperty <bool> sharedExecutable,
            Func <T, Task> executer)
        {
            ValidateArgumentNull(sharedExecutable, nameof(sharedExecutable));

            return
                (this.MakeAsyncCommandCore(
                     executer,
                     null,
                     _ => sharedExecutable.ToAsyncReactiveCommand <T>()));
        }
コード例 #2
0
        /// <summary>
        /// 実施可能状態を共有する非同期実行コマンドを作成する。
        /// </summary>
        /// <param name="sharedExecutable">実行可能状態共有オブジェクト。</param>
        /// <param name="executer">非同期処理デリゲート。</param>
        /// <returns>非同期実行コマンド。</returns>
        protected ICommand MakeSharedAsyncCommand(
            IReactiveProperty <bool> sharedExecutable,
            Func <Task> executer)
        {
            ValidateArgumentNull(sharedExecutable, nameof(sharedExecutable));

            return
                (this.MakeAsyncCommandCore(
                     (executer == null) ?
                     (Func <object, Task>)null : (async _ => await executer()),
                     null,
                     _ => sharedExecutable.ToAsyncReactiveCommand()));
        }
コード例 #3
0
 /// <summary>
 /// Create AsyncReactiveCommand and bind sharedCanExecuteSource source to button's interactable and onClick and register async action to command.
 /// </summary>
 public static IDisposable BindToOnClick(this UnityEngine.UI.Button button, IReactiveProperty <bool> sharedCanExecuteSource, Func <Unit, IObservable <Unit> > asyncOnClick)
 {
     return(sharedCanExecuteSource.ToAsyncReactiveCommand().BindToOnClick(button, asyncOnClick));
 }
コード例 #4
0
 /// <summary>
 /// コンストラクタ。
 /// </summary>
 /// <param name="sharedCanExecute">
 /// コマンド実施可否状態を共有する ReactiveProperty 。
 /// </param>
 public AsyncCommandHolderBase(IReactiveProperty <bool> sharedCanExecute)
     : this(sharedCanExecute?.ToAsyncReactiveCommand <TParameter>())
 {
     ValidateArgumentNull(sharedCanExecute, nameof(sharedCanExecute));
 }