Example #1
0
 /// <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);
     }
 }
Example #2
0
 /// <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);    // 仮引数後処理
 }