[worflow foundation] ForEach<T>
練習一下用法
1. 加入新的類別
2. 輸入下列程式
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HelloWordWF
{
/// <summary>
/// 員工資料
/// </summary>
public class EmployeeDataItem
{
public string EmpName { get; set; }
public string EmpId { get; set; }
public decimal Salary { get; set; }
}
/// <summary>
/// 公司資料
/// </summary>
public class EmployeeData
{
public EmployeeData()
{
items = new List<EmployeeDataItem>();
}
public int CompanyID { get; set; }
//引用員工資料類別
public List<EmployeeDataItem> items { get; set; }
}
}
3. 加入新的流程
4. 建立引數,並瀏覽型別
5. 選擇EmployeeData
6. 建立第二個引數OutputData,注意方向為輸出,型態為Decimal
7. 拉入一個ForEach並設定屬性
8. 拉一個assign activity,目前設計畫面如下
9. 修改assign屬性
10. 最後設計畫面如下
11. 修改主程式如下
using System.Linq;
using System.Activities;
using System.Activities.Statements;
using System.Collections.Generic;
namespace HelloWordWF
{
class Program
{
static void Main(string[] args)
{
//建立引數物件EmployeeData
EmployeeData empdata = new EmployeeData(){
CompanyID = 123,
};
empdata.items.Add(new EmployeeDataItem()
{
EmpId = "a1",
EmpName = "李阿貓",
Salary = Decimal.Parse("1000")
});
empdata.items.Add(new EmployeeDataItem()
{
EmpId = "a2",
EmpName = "李阿狗",
Salary = Decimal.Parse("2000")
});
empdata.items.Add(new EmployeeDataItem()
{
EmpId = "a3",
EmpName = "李阿牛",
Salary = Decimal.Parse("3000")
});
//workflow的引數參數要用Dinctionary<,>帶入
IDictionary<string, object> input = new Dictionary<string, object>
{
//注意引數名稱方向為輸入
{"EmployeeData",empdata}
};
//workflow的引數參數要用Dinctionary<,>輸出
//注意引數名稱方向為輸出
IDictionary<string,object> output = WorkflowInvoker.Invoke(new TestForEachAndTryCatch(),input);
Console.WriteLine("總金額為:" + ((Decimal)output["OutputData"]).ToString());
Console.WriteLine("請按Enter鍵後離開!");
Console.Read();
}
}
}
12. 執行結果