Прежде всего, важно отметить, что руководство не является законом.
Весь ад (или эквивалент программиста) будет не потерять, если вы не будете следоватьруководящие принципы.
Таким образом, не стесняйтесь соответствующим образом изменять подпись ваших событий.
Однако столь же важно знать , почему эти руководящие принципы были добавлены для начала.с, и одна большая часть ответа (ов) на этот вопрос - управление версиями.
Наличие следующих двух частей и только этих двух частей:
- Источник события, набранный как можно более «универсальным» (обратите внимание, что сигнатуры событий были разработаны задолго до того, как в систему были введены надлежащие обобщенные элементы, поэтому
object
настолько универсален, насколько это было возможно тогда) - Объект, унаследованный от
EventArgs
, тогда вы разрабатываете код, более устойчивый к изменениям.
Прежде всего, так как вам «запрещено» добавлятьили удалить параметры, все будущие версии йоВаше событие будет по-прежнему иметь только sender
и e
.
Во-вторых, в руководстве есть вторая часть, касающаяся параметра e
.Если вы в новой версии вашей библиотеки классов решите изменить сигнатуру обработчика событий, изменив тип параметра e
, вы должны сделать его более конкретным , опустившись от текущеговведите и передайте потомок.
Причина этого в том, что существующий код, который уже обрабатывает ваш текущий (старый) тип, будет по-прежнему работать.
Таким образом, весь аргумент за рекомендацию состоит в том, чтобы:
- Оставайтесь последовательными (как уже упоминали другие)
- Проектируйте на будущее (убедившись, что код, написанный для версии X вашего класса, все еще работает, когда вы выпускаете версию X + 1,без ручного изменения этого кода)
Теперь, если что-то из этого не относится к вашему делу, не стесняйтесь не следовать указаниям.
На самом деле, вы можете сделатьсобытие из Action
, и оно будет работать нормально.