L'evento CompositionTarget.Rendering è un semplice evento EventHandler, con un semplice evento EventArgs. Tuttavia, nella vita reale, apparentemente ottiene sempre un'istanza di RenderingEventArgs. Quindi il tuo gestore di eventi deve iniziare lanciando EventArgs per ottenere le informazioni utili da loro.Perché CompositionTarget.Rendering accetta EventArgs invece di RenderingEventArgs?
Perché non è il caso di tipo EventHandler<RenderingEventArgs>
, così abbiamo potuto raggiungere gli argomenti più facilmente (e più importante, così abbiamo potuto conoscono nemmeno gli argomenti sono lì)? Perché Microsoft ha scelto di dare a questo evento la firma sbagliata?
Mi chiedevo compatibilità con le versioni precedenti: c'era un rilascio in cui RenderingEventArgs non esisteva ancora? - ma non sembra essere il caso. Secondo MSDN, RenderingEventArgs e CompositionTarget sono stati introdotti nella stessa versione su entrambe le piattaforme: in WPF entrambi sono stati aggiunti in .NET 3.0; in Silverlight, entrambi sono stati aggiunti in Silverlight 3.0.
Se si dà alcun tipo di suggerimento, mi sono imbattuto in un vecchio discussion thread cui qualcuno ha detto: "Il delegato sta usando EventArgs perché c'è una sorta di vittoria prestazioni di smistamento per farlo." Se qualcuno può spiegare che tipo di prestazione potrebbe vincere, sarei disposto ad accettarlo come risposta.
+1: la stessa cosa accade anche con gli eventi del mouse. Spesso è necessario cambiarli manualmente in un oggetto MouseEventArgs più specifico per ottenere le proprietà * cool *. –