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

WF4.0 基礎篇(25補充):ActivityFunc 與 InvokeFunc 實現帶回傳值的委派活動

     編輯:關於.NET

承接上一篇 ActivityAction/InvokeAction,本文介紹支援回傳值的委派活動對:ActivityFunc<TResult> 與 InvokeFunc<TResult>,適用於需在流程中動態注入「有回傳值的邏輯片段」場景。

核心類別結構

ActivityFunc<TResult> (繼承 ActivityDelegate):

  • Handler (Activity):要執行的活動樹
  • Argument、Argument1... (DelegateInArgument<T>):輸入參數
  • Result (DelegateOutArgument<TResult>):回傳值

InvokeFunc<TResult> (繼承 NativeActivity<TResult>):

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

ActivityFunc 結構 InvokeFunc 結構

工具箱手動新增

新增 ActivityFunc 選擇型別參數

完整範例:動態注入字串處理邏輯

流程設計:流程設計

  • 變數:myVariable (String)、myResult (String)
  • 屬性:myFunc (ActivityFunc<String, String>)
  • InvokeFunc 繫結 Argument=myVariable、Result=myResult,但 Func 需在 XAML 中以 PropertyReference 指向 myFunc

XAML 關鍵片段:

<InvokeFunc x:TypeArguments="x:String, x:String" Argument="[myVariable]" Result="[myResult]">
  <PropertyReference x:TypeArguments="ActivityFunc(x:String, x:String)" PropertyName="myFunc" />
</InvokeFunc>

宿主程式碼注入實作:

// 自訂有回傳值的活動
public class MyActivity : CodeActivity<string>
{
    public InArgument<string> InArgument { get; set; }
    protected override string Execute(CodeActivityContext context)
    {
        return context.GetValue(InArgument) + ":wxd";
    }
}

// 組裝委派並執行
var wf = new TestWorkflow();
var func = new ActivityFunc<string, string> {
    Argument = new DelegateInArgument<string>(),
    Handler = new MyActivity { InArgument = func.Argument }
};
wf.MyFunc = func;
WorkflowInvoker.Invoke(wf);

執行結果:字串處理結果

完整範例代碼:下載連結

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