首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF4.0 基礎篇(25):ActivityAction 與 InvokeAction 實現無回傳值委派活動

     編輯:關於.NET

ActivityAction / InvokeAction 是 WF4.0 實現「委派活動」模式的核心組合,允許在流程定義階段宣告「待執行的動作簽名」,於運行時由宿主注入具體實作,極大提升流程的擴展性與複用性。

類別結構速覽

ActivityAction (繼承 ActivityDelegate):

  • Handler (Activity):實作邏輯
  • Argument、Argument1... (DelegateInArgument<T>):輸入參數
  • 無回傳值 (此與 ActivityFunc 最大差異)

InvokeAction (繼承 NativeActivity):

  • Action (ActivityAction):要呼叫的委派定義
  • Argument、Argument1... (InArgument<T>):實際傳遞參數

ActivityAction 結構 InvokeAction 結構

工具箱新增與流程設計

新增 ActivityAction 型別參數選擇 屬性設定

流程設計:流程圖

  • 變數:myVariable (String)
  • 屬性:myAction (ActivityAction<String>)
  • InvokeAction 繫結 Argument=myVariable,Action 在 XAML 中以 PropertyReference 指向 myAction

XAML 關鍵片段:

<InvokeAction x:TypeArguments="x:String" Argument="[myVariable]">
  <PropertyReference x:TypeArguments="ActivityAction(x:String)" PropertyName="myAction" />
</InvokeAction>

宿主注入與執行

var wf = new TestWorkflow();
var action = new ActivityAction<string> {
    Argument = new DelegateInArgument<string>(),
    Handler = new WriteLine { Text = action.Argument }
};
wf.MyAction = action;
WorkflowInvoker.Invoke(wf);

執行結果:WriteLine 輸出結果

完整範例代碼:下載連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved