我正在将一个遗留的工作流系统转换为WF4,所以我必须跳过几个障碍才能使它与我们应用程序的应用程序接口相匹配。因此,我将尽量使问题的解释尽可能简单。:)
我有一个自定义的活动,它接受序列作为参数,然后执行它。在执行之前,自定义活动需要遍历序列(以及它的分支等)来查找特定类型的子活动-然后它会对这些特定的子活动进行一些报告。
我知道,当约束可以使用GetChildSubtree活动时,可以在验证期间遍历活动的子子树,但这不能让我在运行时访问列表。我还知道也可以在主机应用程序中使用ActivityValidationServices执行类似的调用,但这也不适用于我的场景。
那么,从自定义活动的执行方法中获取子子树中的活动列表的最佳方法是什么呢?
提前感谢!
马库斯。
发布于 2012-09-21 21:46:19
您可能想看看WorkflowInspectionServices类,它提供了处理活动树的运行时元数据的方法。特别是GetActivities方法。
GetActivities返回活动的所有直接子项,包括活动、委托处理程序、变量默认值和参数表达式。您现在可以编写一个扩展方法来返回所有活动,包括内部分支:
public static IEnumerable<Activity> GetInnerActivities(this Activity activity)
{
var children = WorkflowInspectionServices.GetActivities(activity);
foreach (var child in children)
{
children = children.Concat(child.GetChildren());
}
return children;
}
现在获取指定类型的所有活动的内部活动:
activity.GetInnerActivities().OfType<MySpecificType>();
https://stackoverflow.com/questions/12537412
复制相似问题