событие Action <> против события EventHandler <>

Есть ли разница между объявлениемevent Action<> а такжеevent EventHandler<>.

Предполагая, что не имеет значения, какой объект на самом деле вызвал событие.

например:

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

против

public event EventHandler<DiagnosticsArgs> DiagnosticsEvent;

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

использование будет почти одинаковым в обоих случаях:

obj.DiagnosticsEvent += HandleDiagnosticsEvent;

Есть несколько вещей, которые мне не нравятсяevent EventHandler<> шаблон:

Дополнительное объявление типа, полученное из EventArgsОбязательная передача объекта источника - часто никому нет дела

Больше кода означает больше кода для поддержки без каких-либо явных преимуществ.

В результате я предпочитаюevent Action<>

Однако, только если в Action <> слишком много аргументов типа, тогда потребуется дополнительный класс.

Ответы на вопрос(6)

Ваш ответ на вопрос