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:

Dodatkowa deklaracja typu wywodząca się z EventArgsObowiązkowe przekazywanie źródła obiektu - często nikogo to nie obchodzi

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.

questionAnswers(6)

yourAnswerToTheQuestion