ActivityAction / InvokeAction 是 WF4.0 實現「委派活動」模式的核心組合,允許在流程定義階段宣告「待執行的動作簽名」,於運行時由宿主注入具體實作,極大提升流程的擴展性與複用性。
ActivityAction (繼承 ActivityDelegate):
Handler (Activity):實作邏輯Argument、Argument1... (DelegateInArgument<T>):輸入參數InvokeAction (繼承 NativeActivity):
Action (ActivityAction):要呼叫的委派定義Argument、Argument1... (InArgument<T>):實際傳遞參數


流程設計:
myVariable (String)myAction (ActivityAction<String>)InvokeAction 繫結 Argument=myVariable,Action 在 XAML 中以 PropertyReference 指向 myActionXAML 關鍵片段:
<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);
執行結果:
完整範例代碼:下載連結