让人误解的WF(In/Out)参数
前几天用WWF搞了一个小的流程控制程序,其中使用到Messaging Activity,因为是直接用Code来实现的WF逻辑,在处理ReceiveActivity和SendActivity时,将参数给使用反了,特记录下:
Messaging Activity中包含有两种类别:Send类(Send,SendReply)和Receive类(Receive,ReceiveReply)。
在WF中,与Activity的参数交互都是使用InArgument,OutArgument或InOutArgument。
乍一看,Send/SendReply是用于消息的发送,应该使用的是OutArgument(将消息Out出去),但事实上,恰恰相反,此Out非彼Out,它使用的是InArgument,因为数据要传入活动,之后发送消息。类似的,Receive/ReceiveReply Activity使用的就是OutArgument了,数据要传出活动,用于接收消息。
MSDN官方说法:In 参数用于发送活动,因为数据将传入活动。Out 参数用于接收活动,因为数据将传出活动。
Example:
Receive reserveSeat = new Receive
{
...
Content = new ReceiveParametersContent
{
Parameters =
{
{ "ReservationInfo", new OutArgument<ReservationRequest>(reservationInfo) }
}
}
};
SendReply reserveSeat = new SendReply
{
...
Request = reserveSeat,
Content = new SendParametersContent
{
Parameters =
{
{ "ReservationId", new InArgument<string>(reservationId) }
}
},
};
白话表述就是:In 参数将数据传入Send/SendReply活动,处理之后发送;Out 参数是Receive/ReceiveReply活动处理逻辑后将数据传出时使用的。
权且记之……
学习快乐,领悟快乐,分享亦快乐!
有帮助、感兴趣就转载哈,注明出处即可……

浙公网安备 33010602011771号