Событие CompositionTarget.Rendering - это простой старый EventHandler с простым старым EventArgs. Однако в реальной жизни он, по-видимому, всегда получает экземпляр RenderingEventArgs. Таким образом, ваш обработчик событий должен начать с того, что вы выбрали EventArgs, чтобы извлечь из них полезную информацию.
Почему это не событие типа EventHandler<RenderingEventArgs>
, поэтому мы могли бы легче перейти к аргументам (и что более важно, чтобы мы могли даже знать, что существуют аргументы)? Почему Microsoft выбрала для этого события неправильную подпись?
Я задавался вопросом о обратной совместимости - был ли релиз, где RenderingEventArgs еще не существует? - но это, похоже, не так. Согласно MSDN, RenderingEventArgs и CompositionTarget были представлены в той же версии на обеих платформах - в WPF оба были добавлены в .NET 3.0; в Silverlight оба были добавлены в Silverlight 3.0.
Если он дает какой-либо намек, я наткнулся на старый дискуссионный поток, где кто-то сказал: "Делегат использует EventArgs, потому что некоторые вид победы производительности при сортировке, делая это". Если кто-то может объяснить, какой может быть победа в производительности, я бы согласился принять это как ответ.