evento Action <> vs event EventHandler <>

Existe alguma diferença entre declararevent Action<> eevent EventHandler<>.

Assumindo que não importa qual objeto realmente levantou um evento.

por exemplo:

public event Action<bool, int, Blah> DiagnosticsEvent;

vs

public event EventHandler<DiagnosticsArgs> DiagnosticsEvent;

class DiagnosticsArgs : EventArgs
{
    public DiagnosticsArgs(bool b, int i, Blah bl)
    {...}
    ...
}

o uso seria quase o mesmo em ambos os casos:

obj.DiagnosticsEvent += HandleDiagnosticsEvent;

Há várias coisas que eu não gostoevent EventHandler<> padronizar:

Declaração de tipo extra derivada de EventArgsPassagem obrigatória de fonte de objeto - muitas vezes ninguém se importa

Mais código significa mais código para manter sem qualquer vantagem clara.

Como resultado, eu prefiroevent Action<>

No entanto, somente se houver muitos argumentos de tipo em Action <>, será necessária uma classe extra.

questionAnswers(6)

yourAnswerToTheQuestion