2013-04-01 4 views
6

Ich habe es zufällig herausgefunden (wenn etwas kompiliert wurde, von dem ich nicht dachte, dass es kompiliert werden würde), dass EventHandler nicht auf den Typ System.EventArgs beschränkt ist.Warum keine Einschränkung für EventHandler <TEventArgs>?

Hier ist die Inline-Dokumentation:

#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); 
} 

Ist dies eine Diskrepanz zwischen Dokumentation und Implementierung?

Ich frage, weil ich neugierig bin. Es ist überhaupt keine Beschwerde.

+1

Ich frage mich, was ist, wenn Sie mit Visual Studio 2012 (.NET 4.5) und versuchen Sie bauen geschieht es auf einer Maschine ohne .net 4.5 zu laufen. (Nicht auf einer Maschine mit vs 2012 so kann ich jetzt nicht überprüfen) – Will

Antwort

5

Die Typbeschränkung wurde in .net 4.5 entfernt.

Hier ist die .net 4.5 Signatur. http://msdn.microsoft.com/en-us/library/db0etb8x%28v=vs.110%29.aspx

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

Hier ist die .net 4.0 Signatur. 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

vorausgesetzt, dass die Dokumentation in MSDN nicht geändert habe ich frage mich, ob wir hier einen kleineren Fehler gefunden –

+0

Ich stelle mir vor, diese Änderung war beabsichtigt. Sie haben wahrscheinlich vergessen, die Bemerkung der msdn-Seite zu aktualisieren. Ich bin mir nicht sicher, wo Sie so etwas melden. – Will

+0

Randnotiz: Die Warnung [CA1009] (https://msdn.microsoft.com/en-us/library/ms182133.aspx) ist ebenfalls nicht verschwunden, sodass die Verwendung von Objekten, die nicht von EventArgs abgeleitet sind, weiterhin ausgelöst wird eine FxCop-Warnung. –

Verwandte Themen