CompositionTarget.Rendering事件是一个普通的旧 EventHandler,带有一个普通的旧 EventArgs。然而,在现实生活中,它显然总是得到一个RenderingEventArgs实例。因此,您的事件处理程序必须从转换 EventArgs 开始,以便从中获取有用的信息。
为什么不是 type 的事件EventHandler<RenderingEventArgs>
,所以我们可以更容易地获得论点(更重要的是,我们甚至可以知道论点在那里)?为什么微软会选择给这个事件一个错误的签名?
我想知道向后兼容性——是否存在 RenderingEventArgs 尚不存在的版本?——但似乎并非如此。根据 MSDN,RenderingEventArgs 和 CompositionTarget 是在两个平台上的同一版本中引入的——在 WPF 中,两者都是在 .NET 3.0 中添加的;在 Silverlight 中,两者都是在 Silverlight 3.0 中添加的。
如果它给出任何提示,我遇到了一个旧的讨论线程,其中有人说:“代理正在使用 EventArgs,因为这样做可以在编组方面获得某种性能胜利。” 如果有人可以解释这可能是什么样的表现胜利,我愿意接受这个答案。