Почему CompositionTarget.Rendering принимает EventArgs вместо RenderingEventArgs?

Событие CompositionTarget.Rendering представляет собой обычный старый EventHandler с простыми старыми EventArgs. Однако в реальной жизни очевидно, он всегда получает экземпляр RenderingEventArgs . Таким образом, ваш обработчик событий должен начать с приведения EventArgs, чтобы извлечь из них полезную информацию.

Почему нет события типа EventHandler , чтобы мы могли перейти к аргументы легче (и что более важно, чтобы мы могли даже знать, что аргументы есть там) ? Почему Microsoft решила присвоить этому событию неправильную подпись?

Я задавался вопросом о обратной совместимости - был ли выпуск, где RenderingEventArgs еще не существовало? - но это не так. Согласно MSDN, RenderingEventArgs и CompositionTarget были представлены в одном выпуске на обеих платформах - в WPF обе были добавлены в .NET 3.0; в Silverlight, оба были добавлены в Silverlight 3.0.

Если он дает какую-либо подсказку, я наткнулся на старую ветку обсуждения , где кто-то сказал: «Делегат использует EventArgs, потому что при маршаллинге есть какой-то выигрыш в производительности делая это ". Если кто-то может объяснить, что это может быть за результативность, я бы согласился принять это как ответ.

17
задан Joe White 2 September 2010 в 12:55
поделиться