<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      .Net 狀態(tài)機(jī)Stateless

      Stateless 庫中,可以通過配置來獲取狀態(tài)(State)、觸發(fā)器(Trigger)以及目標(biāo)狀態(tài)(Destination State)。以下是如何進(jìn)行配置的詳細(xì)說明:

      1. 創(chuàng)建狀態(tài)機(jī)

      首先,你需要?jiǎng)?chuàng)建一個(gè)狀態(tài)機(jī)實(shí)例。狀態(tài)機(jī)實(shí)例需要指定當(dāng)前狀態(tài)和觸發(fā)器類型。例如:

      var phoneCall = new StateMachine<State, Trigger>(State.OffHook);
      

      CopyInsert

      在這個(gè)例子中,StateTrigger 是枚舉類型,State.OffHook 是初始狀態(tài)。

      2. 配置狀態(tài)和觸發(fā)器

      接下來,你可以配置每個(gè)狀態(tài)的行為,包括允許的觸發(fā)器和目標(biāo)狀態(tài)。例如:

      phoneCall.Configure(State.OffHook)
          .Permit(Trigger.CallDialed, State.Ringing);
      

      CopyInsert

      在這個(gè)例子中,當(dāng)狀態(tài)為 OffHook 時(shí),觸發(fā)器 CallDialed 會(huì)將狀態(tài)轉(zhuǎn)換為 Ringing

      3. 獲取當(dāng)前狀態(tài)和允許的觸發(fā)器

      你可以通過 StateMachine.State 屬性獲取當(dāng)前狀態(tài),并通過 StateMachine.PermittedTriggers 屬性獲取當(dāng)前狀態(tài)下允許的觸發(fā)器。例如:

      State currentState = phoneCall.State;
      IEnumerable<Trigger> allowedTriggers = phoneCall.PermittedTriggers;
      

      CopyInsert

      4. 觸發(fā)狀態(tài)轉(zhuǎn)換

      你可以通過 Fire 方法觸發(fā)狀態(tài)轉(zhuǎn)換。例如:

      phoneCall.Fire(Trigger.CallDialed);
      

      CopyInsert

      這將觸發(fā)狀態(tài)從 OffHook 轉(zhuǎn)換到 Ringing。

      5. 配置子狀態(tài)和初始狀態(tài)

      如果你有子狀態(tài),可以通過 InitialTransition 方法配置初始子狀態(tài)。例如:

      phoneCall.Configure(State.Connected)
          .InitialTransition(State.OnHold);
      

      CopyInsert

      在這個(gè)例子中,OnHoldConnected 狀態(tài)的初始子狀態(tài)。

      6. 異步觸發(fā)器

      如果你需要處理異步操作,可以使用 FireAsync 方法。例如:

      await phoneCall.FireAsync(Trigger.CallDialed);
      

      CopyInsert

      7. 導(dǎo)出狀態(tài)機(jī)圖

      你可以將狀態(tài)機(jī)導(dǎo)出為 DOT 圖格式,以便可視化。例如:

      string dotGraph = UmlDotGraph.Format(phoneCall.GetInfo());
      

      CopyInsert

      這個(gè)字符串可以被渲染為圖像,例如使用 Graphviz 工具。

      8. 外部狀態(tài)存儲(chǔ)

      如果你需要將狀態(tài)存儲(chǔ)在外部對(duì)象中,可以在創(chuàng)建狀態(tài)機(jī)時(shí)傳遞讀寫狀態(tài)的委托。例如:

      var stateMachine = new StateMachine<State, Trigger>(
          () => myState.Value,
          s => myState.Value = s);
      

      CopyInsert

      在這個(gè)例子中,myState 是一個(gè)包含狀態(tài)值的對(duì)象。

      9. 事件通知

      你可以訂閱狀態(tài)轉(zhuǎn)換事件,以便在狀態(tài)轉(zhuǎn)換時(shí)執(zhí)行特定操作。例如:

      phoneCall.OnTransitioned(t => Console.WriteLine($"Transitioned from {t.Source} to {t.Destination}"));
      

      CopyInsert

      10. 保護(hù)子句

      你可以使用保護(hù)子句來決定在多個(gè)可能的轉(zhuǎn)換中選擇哪一個(gè)。例如:

      phoneCall.Configure(State.OffHook)
          .PermitIf(Trigger.CallDialed, State.Ringing, () => IsValidNumber);
      

      CopyInsert

      在這個(gè)例子中,IsValidNumber 是一個(gè)布爾函數(shù),用于決定是否允許轉(zhuǎn)換。

      posted @ 2024-09-14 10:50  猿鋒博客  閱讀(297)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: аⅴ天堂国产最新版在线中文 | 国产精品日韩中文字幕熟女| 亚亚洲视频一区二区三区| 在线日韩一区二区| 亚洲嫩模喷白浆在线观看| 亚洲日韩一区二区| 美女无遮挡免费视频网站| 亚洲熟女乱色一区二区三区| 精品无码国产自产拍在线观看蜜| 成人自拍小视频在线观看| 亚洲一区二区三区| 亚洲精品男男一区二区| 四虎永久免费高清视频| 国产一区二区日韩经典| 性久久久久久| 国产精品自在拍在线播放| 中文字幕亚洲国产精品| 成人国产乱对白在线观看| 日韩深夜福利视频在线观看| 久久精品国产亚洲av亚| 永久国产盗摄一区二区色欲| 精品视频在线观看免费观看| 久久天天躁狠狠躁夜夜不卡| 重口SM一区二区三区视频| 国内揄拍国内精品少妇| 免费国产精品黄色一区二区| 日本熟妇XXXX潮喷视频| 无码人妻丰满熟妇区bbbbxxxx | 亚洲成人高清av在线| 人妻精品人妻无码一区二区三区| 人妻日韩人妻中文字幕| 日本边添边摸边做边爱的网站 | 亚洲欧美精品一中文字幕| 婷婷开心色四房播播| 国产AV影片麻豆精品传媒| 亚洲成熟女人av在线观看| 五月婷婷开心中文字幕| 国产精品不卡区一区二| 精品人妻伦一二三区久久| 好男人社区神马在线观看www | 国产色无码专区在线观看|