событие 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<>
шаблон:
Больше кода означает больше кода для поддержки без каких-либо явных преимуществ.
В результате я предпочитаюevent Action<>
Однако, только если в Action <> слишком много аргументов типа, тогда потребуется дополнительный класс.