smw*_*dia 5 .net-4.0 workflow-foundation workflow-foundation-4
我在.NET 4.0中使用Windows Workflow Foundation.下面是我的一些语法/语义混淆.
我有2种等效的方式来声明一个Assign活动来为工作流变量赋值(varIsFreeShipping).
(1)在设计器中使用XAML.

(2)使用代码.

但是在方法2中,似乎我正在创建一个新的 OutArgument <Boolean>并为其赋值,而不是原始的 Variable <Boolean> varIsFreeShipping.OutArgument和Variable是完全不同的类型.
那么分配给这个新参数的值最终如何才能达到原始变量?
这种模式在WF 4.0中似乎很常见.有人可以对此有所了解吗?
谢谢!
事实上,第二种(2)方法可以写成:
Then = new Assign<bool>
{
To = varIsFreeShipping,
Value = true
}
Run Code Online (Sandbox Code Playgroud)
这一切都有效,因为OutArgument<T>可以使用隐式运算符通过Variable<T>进行初始化。
在您的第一个 (1) 作业中,使用编辑器,这就是幕后发生的事情;该变量正在从 Variable隐式转换为 OutArgument。
WF4 使用了很多隐式运算符,主要是 Activity<T> from/to Variable<T>、OutArgument<T> from/to Variable<T> 等。如果你看一下,它们都代表一条数据(已经计算过)或不是),它位于某个地方。它与 C# 中的完全相同,例如:
public int SomeMethod(int a)
{
var b = a;
return a;
}
Run Code Online (Sandbox Code Playgroud)
您可以将参数分配给变量,但也可以将同一变量作为输出参数返回。这就是您对Assign<T> 活动所做的事情(使用变量varIsFreeShipping作为活动的out 参数)。
这回答了你的问题吗?