属性与自变量

可使用多个选项将数据传入活动中。 除了使用 InArgument,还可以开发活动,以使用标准 CLR 属性或公共 ActivityAction 属性接收数据。 本主题讨论如何选择适当的方法类型。

使用 CLR 属性

将数据传递到活动时,CLR 属性(即使用 Get 和 Set 例程公开数据的公共方法)是具有最大限制的选项。 编译解决方案时,必须知道传递到 CLR 属性的参数的值;对于工作流的每个实例,此值将相同。 这样,传入 CLR 属性的值类似于代码中定义的常量;此值无法更改活动生命周期,并且不能更改活动的不同实例。 MethodName 是活动公开的 CLR 属性的示例;无法根据运行时条件更改活动调用的方法名称,并且对于活动的每个实例都是相同的。

使用参数

在活动生存期内仅计算一次数据时,应使用参数;也就是说,其值不会在活动的生存期内更改,但对于活动的不同实例,该值可能有所不同。 Condition 是计算一次的值的示例;因此,它定义为参数。 Text 是应定义为参数的方法的另一个示例,因为它仅在活动执行期间计算一次,但对于活动的不同实例,该方法可能有所不同。

使用 ActivityAction

在活动执行的生命周期内需要多次评估数据时,应使用 ActivityAction 。 例如,在 Condition 循环的每次迭代时都会评估 While 属性。 InArgument如果用于此目的,则循环永远不会退出,因为每次迭代都不会重新计算该参数,并且始终返回相同的结果。