WF4活动没有Id

时间:2011-10-20 16:14:06

标签: .net c#-4.0 workflow-foundation workflow-foundation-4 workflow-activity

我想知道如何获得简单活动的ID。例如:

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

id始终为null,因为它有私有的Setter,我无法设置此值 在哪种情况下,这个值会被一个Id和谁填充?

非常感谢您的回答。

2 个答案:

答案 0 :(得分:2)

使用WorkflowDesigner时或在运行时设置ID。但即便如此,使用它也很棘手,因为它可以在WorkflowDesigner中采用不同的形式,具体取决于您加载工作流的方式。

答案 1 :(得分: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);
    }
}