zdarzenie Akcja <> vs zdarzenie EventHandler <>
Czy jest coś innego między deklarowaniemevent Action<>
ievent EventHandler<>
.
Zakładając, że nie ma znaczenia, który obiekt rzeczywiście wywołał zdarzenie.
na przykład:
public event Action<bool, int, Blah> DiagnosticsEvent;
vs
public event EventHandler<DiagnosticsArgs> DiagnosticsEvent;
class DiagnosticsArgs : EventArgs
{
public DiagnosticsArgs(bool b, int i, Blah bl)
{...}
...
}
użycie byłoby prawie takie samo w obu przypadkach:
obj.DiagnosticsEvent += HandleDiagnosticsEvent;
Jest kilka rzeczy, w których nie lubięevent EventHandler<>
wzór:
Więcej kodu oznacza więcej kodu do utrzymania bez wyraźnej przewagi.
W rezultacie wolęevent Action<>
Jednak tylko wtedy, gdy w Akcji <> jest zbyt wiele argumentów typu, wymagana byłaby dodatkowa klasa.