使用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