2013-04-01 15 views
6

Tôi chỉ tìm ra một cách ngẫu nhiên (khi một cái gì đó biên dịch mà tôi không nghĩ sẽ biên dịch) rằng EventHandler là không bị ràng buộc với kiểu System.EventArgs.Tại sao không có ràng buộc đối với EventHandler <TEventArgs>?

Dưới đây là các tài liệu nội tuyến:

#region Assembly mscorlib.dll, v4.0.0.0 
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll 
#endregion 

namespace System 
{ 
    // Summary: 
    //  Represents the method that will handle an event. 
    // 
    // Parameters: 
    // sender: 
    //  The source of the event. 
    // 
    // e: 
    //  An System.EventArgs that contains the event data. 
    // 
    // Type parameters: 
    // TEventArgs: 
    //  The type of the event data generated by the event. 
    [Serializable] 
    public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); 
} 

Đây có phải là một không phù hợp giữa tài liệu và thực hiện?

Tôi hỏi vì tôi tò mò. Nó không phải là một khiếu nại nào cả.

+1

Tôi tự hỏi điều gì sẽ xảy ra nếu bạn xây dựng với visual studio 2012 (.net 4.5) và cố gắng chạy nó trên một máy mà không cần .net 4.5. (Không phải trên một máy tính với vs 2012 vì vậy tôi không thể kiểm tra ngay bây giờ) – Will

Trả lời

5

Ràng buộc loại đã bị xóa trong .net 4.5.

Đây là chữ ký 4.5. http://msdn.microsoft.com/en-us/library/db0etb8x%28v=vs.110%29.aspx

[SerializableAttribute] 
public delegate void EventHandler<TEventArgs>(
    Object sender, 
    TEventArgs e 
) 

Đây là chữ ký .net 4.0. http://msdn.microsoft.com/en-us/library/db0etb8x%28v=vs.100%29.aspx

[SerializableAttribute] 
public delegate void EventHandler<TEventArgs>(
    Object sender, 
    TEventArgs e 
) 
where TEventArgs : EventArgs 
+0

cho rằng tài liệu không thay đổi trong MSDN tôi tự hỏi, nếu chúng tôi tìm thấy một lỗi nhỏ ở đây –

+0

Tôi tưởng tượng thay đổi này là cố ý. Họ có lẽ chỉ quên cập nhật nhận xét của trang msdn. Tôi không chắc bạn sẽ báo cáo điều đó ở đâu. – Will

+0

Lưu ý phụ: cảnh báo [CA1009] (https://msdn.microsoft.com/en-us/library/ms182133.aspx) không biến mất, do đó, việc sử dụng mọi thứ không lấy được từ EventArgs sẽ vẫn kích hoạt một cảnh báo FxCop. –

Các vấn đề liên quan