首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取子活动子树

获取子活动子树
EN

Stack Overflow用户
提问于 2012-09-21 20:01:06
回答 1查看 1.2K关注 0票数 1

我正在将一个遗留的工作流系统转换为WF4,所以我必须跳过几个障碍才能使它与我们应用程序的应用程序接口相匹配。因此,我将尽量使问题的解释尽可能简单。:)

我有一个自定义的活动,它接受序列作为参数,然后执行它。在执行之前,自定义活动需要遍历序列(以及它的分支等)来查找特定类型的子活动-然后它会对这些特定的子活动进行一些报告。

我知道,当约束可以使用GetChildSubtree活动时,可以在验证期间遍历活动的子子树,但这不能让我在运行时访问列表。我还知道也可以在主机应用程序中使用ActivityValidationServices执行类似的调用,但这也不适用于我的场景。

那么,从自定义活动的执行方法中获取子子树中的活动列表的最佳方法是什么呢?

提前感谢!

马库斯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-21 21:46:19

您可能想看看WorkflowInspectionServices类,它提供了处理活动树的运行时元数据的方法。特别是GetActivities方法。

GetActivities返回活动的所有直接子项,包括活动、委托处理程序、变量默认值和参数表达式。您现在可以编写一个扩展方法来返回所有活动,包括内部分支:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
}

现在获取指定类型的所有活动的内部活动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
activity.GetInnerActivities().OfType<MySpecificType>();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12537412

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文