Sự kiện CompositionTarget.Rendering là EventHandler cũ đơn giản, với EventArgs cũ đơn giản. Tuy nhiên, trong cuộc sống thực, nó dường như luôn luôn được một ví dụ của RenderingEventArgs. Vì vậy, trình xử lý sự kiện của bạn phải bắt đầu bằng cách truyền EventArgs để lấy thông tin hữu ích từ chúng.Tại sao CompositionTarget.Rendering lấy EventArgs thay vì RenderingEventArgs?
Tại sao không phải là sự kiện loại EventHandler<RenderingEventArgs>
, vì vậy chúng tôi có thể nhận được đối số dễ dàng hơn (và quan trọng hơn, vì vậy chúng tôi thậm chí có thể biết đối số là ở đó)? Tại sao Microsoft lại chọn cho sự kiện này chữ ký sai?
Tôi tự hỏi về khả năng tương thích ngược - đã có bản phát hành ở đó RenderingEventArgs chưa tồn tại chưa? - nhưng đó không phải là trường hợp. Theo MSDN, RenderingEventArgs và CompositionTarget được giới thiệu trong cùng một bản phát hành trên cả hai nền tảng - trong WPF, cả hai đều được thêm vào .NET 3.0; trong Silverlight, cả hai đều được thêm vào trong Silverlight 3.0.
Nếu nó đưa ra bất kỳ loại gợi ý nào, tôi chạy ngang qua một số discussion thread cũ, nơi ai đó nói, "Đại biểu đang sử dụng EventArgs vì có một số loại hiệu suất giành chiến thắng trên marshalling bằng cách làm điều đó." Nếu ai đó có thể giải thích loại chiến thắng nào có thể đạt được, tôi sẽ sẵn sàng chấp nhận điều đó như một câu trả lời.
+1: Điều tương tự cũng xảy ra với các sự kiện chuột. Bạn thường cần phải tự thay đổi chúng thành một MouseEventArgs cụ thể hơn để nhận được các thuộc tính * cool *. –