2010-10-07 48 views
9

使用WF 4.0时我注意到WorkflowApplication类公开了动作属性(中止,完成等等)而不是事件。 是否有特定的原因?我应该什么时候更喜欢动作属性而不是事件?我应该公开行动而不是事件吗?

谢谢

回答

1

我给WF团队的一位成员发了一封电子邮件,好心的他回答了我。他告诉我事件和行动几乎相同,但团队对使用行为的API有更好的感觉。

6

哇;我看到what you mean;这真的让我感到惊讶。然而,如果你不能想到在这里使用属性的好理由(我不能),那么坚持event s;他们避免了一系列问题(意外取消订阅和不恰当的调用是最大的)。

我能想到的唯一的事情是也许他们需要这个序列化的目的,但我可以想出其他方法来破解这个螺母。或者,也许常规事件在WF的疯狂“依赖属性”/“附属属性”/“路由事件”世界中没有意义。

+0

谢谢......我想知道是不是因为他们很容易通过Xaml进行序列化......或者他们可以更容易地被设计者处理...... – fra 2010-10-07 12:19:11

+0

@fra - re后者,winforms designer多年来一直在经常举办活动......据推测他们只是从那里取消了一些代码? – 2010-10-07 12:22:07

3

编辑:以下内容不准确,详见下文Marc's comment

首先,事件允许固有的多个处理程序,而Action属性只允许一个处理程序。是的,Action属性本身可以进行广播,但这不是很有凝聚力或习惯用法。

我与马克在这一个,我很惊讶他们使用Action属性而不是标准事件。

+4

那么,*如果您使用* + =/- =,委托属性将表现(在表面层面)*与事件相同*。所以有点难以争辩说它只允许一个处理程序。 – 2010-10-07 06:01:04

+1

@Marc:好点,这是更坚持事件的理由,因为一个用户可能使用'+ =',而另一个只是'=',这将有效地删除第一个。 – 2010-10-07 06:06:25

相关问题