Почему параметр объекта EventHandlers является просто типом объекта?

2

Почему EventHandlers спроектированы таким образом?

void uxSave_Click(object sender, EventArgs e)

почему бы не это?

void uxSave_Click(Button sender, EventArgs e)
Теги:
design-patterns

3 ответа

3
Лучший ответ

Потому что, используя первый способ, вы также можете присоединить это событие click к панели. Но если это делается во втором случае, если вам нужно контролировать события, делающие то же самое, вам нужно определить два события, не присоединяя их к двум местам.

3

Кроме того, имейте в виду, что у .NET не было генериков в версии 1.0. В противном случае разумный дизайн мог бы определить обработчик события:

public delegate void EventHandler<TSender, TEventArgs>(TSender sender, TEventArgs e);
public event EventHandler<Control,ClickEventArgs> Click;
0

Я думаю, это возможно потому, что вы не всегда можете предположить, что ваш отправитель - это тот тип, который вы ожидаете от него. Кто-то еще может вызвать это событие из другого места.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню