/// <summary> /// 引数付きでコールバックを呼んで返り値を得ます。 /// </summary> /// <typeparam name="R">返り値の型</typeparam> /// <param name="dummyArgumentsControl">仮引数コントロール</param> /// <param name="cagt">仮引数スタック</param> /// <param name="func">コールバック変数</param> /// <param name="arg">コールバック引数</param> /// <param name="def">コールバックの返り値を得られなかったときの返り値</param> /// <returns>コールバックの返り値</returns> protected R GetCallBackResult <R>(DummyArgumentsControl dummyArgumentsControl, DummyArgumentsStack cagt, ICbValue func, object arg, R def) { if (!CanCallBack(func)) { return(def); } if (arg is ICbValue cbValue) { dummyArgumentsControl.EnableCbValue(cagt, cbValue); // 仮引数に引数を登録 } else { dummyArgumentsControl.Enable(cagt, (dynamic)arg); // 仮引数に引数を登録 } if (typeof(R) == typeof(ICbValue)) { ICbValue result = CallEvent(func, cagt); dummyArgumentsControl.Invalidated(cagt); // 仮引数後処理 return((R)result); } else { R result = (R)CallEvent(func, cagt).Data; dummyArgumentsControl.Invalidated(cagt); // 仮引数後処理 return(result); } }
/// <summary> /// 引数付きでコールバックを呼びます。 /// </summary> /// <param name="dummyArgumentsControl">仮引数コントロール</param> /// <param name="cagt">仮引数スタック</param> /// <param name="func">コールバック変数</param> /// <param name="arg">コールバック引数</param> protected void CallCallBack(DummyArgumentsControl dummyArgumentsControl, DummyArgumentsStack cagt, ICbValue func, object arg) { if (arg is ICbValue cbValue) { dummyArgumentsControl.EnableCbValue(cagt, cbValue); // 仮引数に引数を登録 } else { dummyArgumentsControl.Enable(cagt, (dynamic)arg); // 仮引数に引数を登録 } CallEvent(func, cagt); dummyArgumentsControl.Invalidated(cagt); // 仮引数後処理 }