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

WF4.0 基礎篇(26):Interop 活動無縫呼叫 WF3.x 活動

     編輯:關於.NET

WF4.0 提供 Interop 活動 (System.Activities.Statements.Interop) 讓開發者在 WF4 流程中直接重用現有 WF3.x 活動 (System.Workflow.Activities.Activity),保護既有資產投資,平滑遷移。

Interop 核心特性

  • 繼承 NativeActivity,實作 ICustomTypeDescriptor
  • 覆寫 CacheMetadata、Cancel、Execute、CanInduceIdle
  • 關鍵屬性:
    • ActivityType (Type):指定要呼叫的 WF3.x 活動型別
    • ActivityProperties (IDictionary<String, Object>):WF3 活動屬性繫結,自動產生 屬性名 與 屬性名Out 兩個參數
    • ActivityMetaProperties (IDictionary<String, Object>):中繼屬性 (如 Name)

範例說明 Interop 結構

使用前置設定

  1. 專案目標框架設為 .NET Framework 4 (非 Client Profile) 目標框架
  2. 工具箱手動新增 Interop 活動 工具箱新增
  3. 設定 ActivityType 指向 WF3.x 活動型別 ActivityType 設定 型別選擇
  4. 自動產生雙向繫結參數 參數產生

範例 1:設計器模式呼叫 WF3.x 活動

WF3.x 活動:擁有 printText 相依屬性,Execute 中列印並修改其值。

protected override ActivityExecutionStatus Execute(ActivityExecutionContext context)
{
    Console.WriteLine(this.printText);
    this.printText = printText + ":wxd";
    return ActivityExecutionStatus.Closed;
}

WF4 工作流:Interop 呼叫上述活動,傳入初始值並輸出修改後值。WF4 工作流設計

執行結果:雙向繫結生效

範例 2:程式碼模式建構 Interop

var myVar = new Variable<string> { Default = "wxwinter" };
var root = new Sequence
{
    Variables = { myVar },
    Activities = {
        new Interop
        {
            ActivityType = typeof(MyWf3Activity),
            ActivityProperties = {
                { "printText", new InArgument<string>(myVar) },
                { "printTextOut", new OutArgument<string>(myVar) }
            },
            ActivityMetaProperties = { { "Name", "myActivity" } }
        },
        new WriteLine { Text = myVar }
    }
};
WorkflowInvoker.Invoke(root);

結果:程式碼模式結果

完整範例代碼:下載連結

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