Почему в шаблоне событий используется параметр отправителя?C#

Место общения программистов C#
Ответить
Anonymous
 Почему в шаблоне событий используется параметр отправителя?

Сообщение Anonymous »

В типичном шаблоне событий в C# я обычно вижу вызывающий объект, отправляемый в качестве аргумента, например:

Код: Выделить всё

// in the invoking class
private void TriggerMyEvent()
{
MyEvent?.Invoke(this, new MyEventArgs());
}

// in the subscriber class
private void OnMyEvent(object sender, MyEventArgs e)
{
// do stuff
}
Я видел, что этот шаблон широко используется, но мне кажется, что с этим шаблоном будет немного сложно работать, и им можно легко злоупотреблять:
  • Если вы хотите использовать параметр и привести его, вам нужно будет отследить, где вызывается событие, и посмотреть, какого типа объект.
  • Если отправитель будет не будет использоваться, было бы яснее, если бы его там вообще не было.
  • Если вы будете использовать такой аргумент, как MyEventArgs, этот аргумент может вместо этого включать отправителя. Вы даже можете поместить тип в аргумент, минуя приведение.
Итак, почему же это соглашение такое, какое оно есть? Я ошибаюсь в своих комментариях? Каким будет «чистый» способ использования этого отправителя?

Подробнее здесь: https://stackoverflow.com/questions/790 ... meter-used
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»