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

WF 4.0 基礎篇(七):資料傳遞 - 變數與參數實務應用

     編輯:關於.NET

前言

變數與參數是 WF 4.0 資料流向的核心。本文詳細說明 In、Out、In/Out 三種參數方向與變數的綁定行為差異。

參數方向行為對照

方向外部值傳入內部修改影響外部適用場景
In是否唯讀輸入
Out否是唯寫輸出
In/Out是是雙向傳遞

In 參數實測

public sealed class InChangeActivity : CodeActivity
{
    public InArgument<string> MyIn { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        var s1 = context.GetValue(this.MyIn);
        Console.WriteLine("傳入值:{0}", s1);
        context.SetValue(MyIn, Guid.NewGuid().ToString()); // 內部修改
        var s2 = context.GetValue(this.MyIn);
        Console.WriteLine("內部修改:{0}", s2);
    }
}

工作流:變數 myVariable="初始值" → Assign 設值 → 綁定 InChangeActivity.MyIn → 列印變數值。

結果:外部變數值不變,內部修改不影響外部。

工作流 結果

Out 參數實測

public sealed class OutChangeActivity : CodeActivity
{
    public OutArgument<string> MyOut { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        var s1 = context.GetValue(this.MyOut); // 預設 null
        Console.WriteLine("傳入值:{0}", s1);
        context.SetValue(MyOut, Guid.NewGuid().ToString());
        var s2 = context.GetValue(this.MyOut);
        Console.WriteLine("內部修改:{0}", s2);
    }
}

結果:外部變數初始值不傳入內部,內部設值會更新外部變數。

工作流 結果

In/Out 參數實測

public sealed class InOutChangeActivity : CodeActivity
{
    public InOutArgument<string> MyInOut { get; set; }
    protected override void Execute(CodeActivityContext context)
    {
        var s1 = context.GetValue(this.MyInOut);
        Console.WriteLine("傳入值:{0}", s1);
        context.SetValue(MyInOut, Guid.NewGuid().ToString());
        var s2 = context.GetValue(this.MyInOut);
        Console.WriteLine("內部修改:{0}", s2);
    }
}

結果:外部值傳入內部,內部修改同步更新外部變數。

工作流 結果

原始碼下載

VariablesAndArgumentsSample.rar

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