Почему бы не использовать пользовательский класс вместо наследования класса EventArgs - PullRequest
21 голосов
/ 25 июля 2011

Мне интересно, почему я должен использовать класс, который наследуется от класса EventArgs, вместо того, чтобы использовать пользовательский класс, который будет выполнять ту же работу для меня при передаче данных события?

Ответы [ 3 ]

28 голосов
/ 25 июля 2011

У вас нет для наследования от EventArgs, но это позволяет людям, использующим ваши классы, использовать и обрабатывать общие *Handler(object sender, EventArgs e) объявления. Если вы не наследуете от EventArgs, тогда они должны использовать явно набранные

*Handler(object sender, YairsFakeEventArgs e)

То же самое относится и к использованию пользовательских делегатов, но они намного более явные.

18 голосов
/ 25 июля 2011

Поскольку ваш класс event-args будет совместим с любой другой функцией, которая принимает объект EventArgs.

6 голосов
/ 25 июля 2011

Потому что это стандартный и самый идиоматичный способ сделать это в .NET. Вся модель событий ASP.NET и WinForms опирается на эти соглашения. Если другой разработчик прочитает ваш код, ему будет легче понять его, так как это стандарт. Это говорит о том, что вы, конечно, можете использовать любой класс, который вам нравится.

...