2010-10-07 9 views
9

während der Arbeit mit WF 4.0 Ich habe festgestellt, dass die WorkflowApplication-Klasse Aktionseigenschaften (Aborted, Complete, etc ...) statt Ereignisse. Gibt es einen bestimmten Grund? Wann sollte ich Aktionseigenschaften anstelle von Ereignissen bevorzugen?Sollte ich Aktionen statt Ereignisse anzeigen?

Danke

Antwort

1

Ich schickte eine E-Mail an ein Mitglied des WF-Teams und, freundlich, antwortete er mir. Er erzählte mir, dass Ereignisse und Aktionen fast gleichwertig sind, aber das Team hatte ein besseres Gefühl mit der API mit Aktionen.

6

Wow; Ich sehe what you mean; Das überrascht mich wirklich.

Wenn Sie jedoch nicht einen guten Grund finden, Eigenschaften hier zu verwenden (und ich kann nicht), dann bleiben Sie bei event s; Sie vermeiden eine Reihe von Problemen (versehentliche Abmeldung und unangemessener Aufruf sind am größten).

Das einzige, was ich denken kann, ist, dass vielleicht sie für Serialisierungszwecke benötigt, aber ich kann an andere Möglichkeiten denken, diese Nuss zu knacken. Alternativ können vielleicht reguläre Ereignisse in der verrückten "Abhängigkeitseigenschaft"/"angefügte Eigenschaft"/"geleitete Ereigniswelt" von WF keinen Sinn ergeben.

+0

Danke ... Ich frage mich, ob es nur ist, weil sie einfach durch Xaml serialisierbar sind ... oder vielleicht können sie einfacher von dem Designer behandelt werden ... – fra

+0

@fra - re der letztere, der Winforms Designer hat es seit Jahren mit regelmäßigen Veranstaltungen geschafft ... vermutlich hätten sie gerade etwas Code von dort abgehoben? –

3

Bearbeiten: Folgendes ist nicht korrekt, siehe Marc's comment unten.

Zum einen ermöglichen Ereignisse inhärent mehrere Handler, während eine Action Eigenschaft nur einen einzigen Handler erlaubt. Ja, die Action Eigenschaft könnte eine Übertragung selbst durchführen, aber das ist nicht sehr zusammenhängend oder idiomatisch.

Ich bin mit Marc auf diesem einen, ich bin überrascht, dass sie Action Eigenschaften anstelle von Standard-Events verwendet.

+4

Nun, * wenn Sie * + =/- = verwenden, verhält sich eine Delegate-Eigenschaft (auf oberflächlicher Ebene) * identisch * mit dem Ereignis. Also ein bisschen schwer zu argumentieren, dass es nur einen einzigen Handler erlaubt. –

+1

@Marc: guter Punkt, und das ist noch mehr Grund, bei Ereignissen zu bleiben, da ein Benutzer '+ =' verwenden könnte, während ein anderer nur '=' tut, was den ersten effektiv entfernen würde. –

Verwandte Themen