Должен ли я использовать EventHandler <T>и / или шаблон делегата EventArgs? - PullRequest
9 голосов
/ 18 мая 2011

Читая мою C # книгу, она говорит об использовании событий / делегатов (я предполагаю, что я прав, считая, что событие является эквивалентом открытого делегата, у которого нет доступа к переменной-члену) в шаблоне, понравившемся MS:

public delegate Something(object o, EventArgs e)

А затем перейдем к объяснению о EventArgs<T>, что в основном устраняет необходимость объявления делегата:

public EventHandler<SomeEventArgs> events

Что совпадает с (я думаю)

private delegate Something(object o, SomeEventArgs e);

public event Something events;

Это хорошая идея использовать EventHandler? Я понимаю, почему отправка object может быть полезна, но не всегда - и в большинстве случаев EventArgs могут просто раздражать.

1 Ответ

9 голосов
/ 18 мая 2011

Microsoft определенно выдвинула несколько замечательных шаблонов, которые сделали работу с C # приятным опытом. При этом я рекомендую вам писать обработчики событий так, чтобы они были удобны для вашего клиентского кода, а не для написания большого количества кода просто для соответствия шаблону.

delegate void ClientMessageHandler(IClient client, IMessage message);
...