如何将对象传递给WF4中的后代活动?

时间:2011-09-29 18:10:50

标签: c# workflow-foundation-4

我是Workflow Foundation 4的新手,而且我一直在努力做一些似乎应该完全无足轻重的事情。请注意,我主要是在这里编写C#活动,而不是XAML的所有经历。

总结一下我的问题,我试图找出如何以编程方式将会话对象(或任何对象!)传递给所有后代子活动(或者至少是为了教会使用的活动)会议)。

我已经有了一个“外部”活动,您可以在其上删除任何其他活动(包括序列,流程图等任何其他内容)。因此,它只有一个直接的子活动,但反过来可能有几代后代(其内容可能会有所不同),这一点在这里要记住很重要。我不知道会有多少后代活动,或者他们的类型是什么。

“外部”活动在调度其子活动之前,会建立某种会话对象(假设只是一个名为“Session”的对象)。这是主要问题:我有一些特殊的自定义内部活动,需要知道如何获取这个Session引用(即,其他活动不会知道Session,或者不需要)。这些自定义内部活动可能是源自“外部”活动的几代,所以我不能只让外部活动将Session注入其单个子项或类似的东西。

除了使用一些非常昂贵且容易出错且容易出错的递归反射之外,我找不到任何方法来实现这一点。我已经尝试过使用工作流Variables,InArguments和OutArguments,但没有运气让他们继续下去。我认为变量是要走的路,但我很难找到正确的方法来做到这一点(我为我的新生事道歉)。在这一点上,我甚至不确定我是否应该通过传递对象或让后代搜索回来来解决这个问题。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

有两种选择。

  1. 使用扩展程序 - 知道扩展程序的子活动可以获取扩展程序并从中读取数据。
  2. 使用设置执行属性的范围活动 - 请参阅Execution Properties Sample