使用WF 4.0时我注意到WorkflowApplication类公开了动作属性(中止,完成等等)而不是事件。 是否有特定的原因?我应该什么时候更喜欢动作属性而不是事件?我应该公开行动而不是事件吗?
谢谢
使用WF 4.0时我注意到WorkflowApplication类公开了动作属性(中止,完成等等)而不是事件。 是否有特定的原因?我应该什么时候更喜欢动作属性而不是事件?我应该公开行动而不是事件吗?
谢谢
我给WF团队的一位成员发了一封电子邮件,好心的他回答了我。他告诉我事件和行动几乎相同,但团队对使用行为的API有更好的感觉。
哇;我看到what you mean;这真的让我感到惊讶。然而,如果你不能想到在这里使用属性的好理由(我不能),那么坚持event
s;他们避免了一系列问题(意外取消订阅和不恰当的调用是最大的)。
我能想到的唯一的事情是也许他们需要这个序列化的目的,但我可以想出其他方法来破解这个螺母。或者,也许常规事件在WF的疯狂“依赖属性”/“附属属性”/“路由事件”世界中没有意义。
编辑:以下内容不准确,详见下文Marc's comment。
首先,事件允许固有的多个处理程序,而Action
属性只允许一个处理程序。是的,Action
属性本身可以进行广播,但这不是很有凝聚力或习惯用法。
我与马克在这一个,我很惊讶他们使用Action
属性而不是标准事件。
那么,*如果您使用* + =/- =,委托属性将表现(在表面层面)*与事件相同*。所以有点难以争辩说它只允许一个处理程序。 – 2010-10-07 06:01:04
@Marc:好点,这是更坚持事件的理由,因为一个用户可能使用'+ =',而另一个只是'=',这将有效地删除第一个。 – 2010-10-07 06:06:25
谢谢......我想知道是不是因为他们很容易通过Xaml进行序列化......或者他们可以更容易地被设计者处理...... – fra 2010-10-07 12:19:11
@fra - re后者,winforms designer多年来一直在经常举办活动......据推测他们只是从那里取消了一些代码? – 2010-10-07 12:22:07