2011-09-29 82 views
1

我是Workflow Foundation 4的新手,我一直在努力工作几天,看起来应该完全平凡。请注意,我主要是在这里编写C#活动的编码,而不是所有使用XAML的经验。如何将对象传递给WF4中的后代活动?

总结我的问题,我想弄清楚如何以编程方式将会话对象(或任何对象!)传递给所有后代的子活动(或至少是已经教会使用的活动会议)。

我已经有了一个“外部”活动,您可以在其中放置任何其他活动(包括序列,流程图和其他任何组合)。因此,它只有一项直接的儿童活动,但这可能会有几代后代(其内容可能会有所不同),这一点很重要。我不知道会有多少后代活动,或者他们的类型是什么。

“外部”活动在它调度其子活动之前建立了某种会话对象(让我们假设一个名为“Session”的对象)。以下是主要问题:我有一些特定的自定义内部活动,需要知道如何获取此会话参考(即其他活动不知道Session或不需要)。这些自定义的内部活动可能是从“外部”活动开始的几代人,所以我不能只将外部活动注入到单个孩子或类似的东西中。

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

完成此操作的最佳方法是什么?

回答

1

有两种选择。

  1. 使用扩展 - 知道扩展的子活动可以获取它并从中读取数据。
  2. 使用范围活动,设置一个执行的财产 - 见Execution Properties Sample
+0

谢谢,伙计,执行性工作做好! –

+0

也许ActivityAction + DelegateInArgument也可以完成这项工作 –

+0

我不认为解决方案#2会起作用。至少该示例没有演示将属性传递给子活动 - 它显示父设置控制台静态对象上的属性。 – HiredMind

相关问题