Другие ответы предлагают несколько способов (или хаков), как вы могли бы сделать это.
Однако я бы сказал, что если автор библиотеки не дал вам никакого способа создать новый экземпляр своего пользовательского класса EventArgs
, то вам не следует этого делать. Если вы хотите создать собственное событие, вам следует определить новый тип delegate
и новый тип EventArgs
(даже если вы дублировали класс, уже определенный в библиотеке).
Для этого есть веские причины:
- Библиотека может измениться, и пользовательский тип
EventArgs
, который они предоставляют, может больше не соответствовать вашим потребностям.
- Библиотеке может потребоваться передать какой-то особый объект или специальный идентификатор в
EventArgs
, поэтому вы не сможете правильно создать экземпляр.
Поскольку вы можете инициировать событие только из класса, в котором оно определено, вы, вероятно, определяете новое событие в классе (используя ключевое слово event
), поэтому нет реальной причины, по которой вы не могли бы объявить ваш собственный делегат. Или не могли бы вы предоставить более подробную информацию о том, как вы инициируете событие?