/// <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>())); }
/// <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())); }
/// <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)); }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="sharedCanExecute"> /// コマンド実施可否状態を共有する ReactiveProperty 。 /// </param> public AsyncCommandHolderBase(IReactiveProperty <bool> sharedCanExecute) : this(sharedCanExecute?.ToAsyncReactiveCommand <TParameter>()) { ValidateArgumentNull(sharedCanExecute, nameof(sharedCanExecute)); }