0

我想知道,如何獲得簡單活動的Id。例如:WF4活動沒有Id

 Sequence s = new Sequence(); 
     string id = s.Id; 

該id始終爲空,因爲它有一個私人Setter我無法設置此值。
在什麼情況下這個值會被一個Id和誰填充?

非常感謝您的回答。

回答

2

使用WorkflowDesigner時或在運行時設置ID。但即使如此,使用WorkflowDesigner可能會遇到不同的形式,具體取決於您如何加載工作流。

+0

Tahnks。一旦WorkflowDesigner創建活動ID,是否有可能攔截並獲取活動ID? –

0

您可以使用WorkflowInspectionServices列出根活動的活動。使用WorkflowInspectionServices時,會設置ID。

用遞歸函數像這樣的:

void WriteActivities(Activity p_activity, int p_offset) 
{ 
    Console.WriteLine("{2}Activity : {0}, {3} ({1})", p_activity.Id, p_activity.GetType().Name, new String('-', p_offset), p_activity.DisplayName); 
    IEnumerable<Activity> l_activities = WorkflowInspectionServices.GetActivities(p_activity); 

    foreach (Activity l_childActivity in l_activities) 
    { 
     WriteActivities(l_childActivity, p_offset + 1); 
    } 
}