2010-10-07 29 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

相關問題