El evento CompositionTarget.Rendering es un antiguo manejador de eventos antiguo, con un simple antiguo EventArgs. Sin embargo, en la vida real, aparentemente siempre obtiene una instancia de RenderingEventArgs. Por lo tanto, su controlador de eventos debe comenzar lanzando EventArgs para obtener la información útil de ellos.¿Por qué CompositionTarget.Rendering toma EventArgs en lugar de RenderingEventArgs?
¿Por qué no es el caso de tipo EventHandler<RenderingEventArgs>
, por lo que podría llegar a los argumentos más fácilmente (y más importante, por lo que incluso podría conocer los argumentos son allí)? ¿Por qué Microsoft habría elegido dar a este evento la firma incorrecta?
Me pregunté acerca de la compatibilidad con versiones anteriores: ¿hubo algún release donde RenderingEventArgs aún no existía? - pero ese no parece ser el caso. Según MSDN, RenderingEventArgs y CompositionTarget se introdujeron en la misma versión en ambas plataformas: en WPF, ambas se agregaron en .NET 3.0; en Silverlight, ambos se agregaron en Silverlight 3.0.
Si da algún tipo de pista, me encontré con un antiguo discussion thread en el que alguien dijo: "El delegado está utilizando EventArgs porque hay algún tipo de ganancia de rendimiento en organizar al hacer eso". Si alguien puede explicar qué tipo de ganancia de rendimiento podría ser, estaría dispuesto a aceptar eso como una respuesta.
+1: Lo mismo sucede con los eventos del mouse también. A menudo necesita cambiarlos manualmente a MouseEventArgs más específicos para obtener las propiedades * cool *. –