2013-04-01 11 views
6

Ho appena capito per caso (quando qualcosa compilato che non pensavo potesse essere compilato) che EventHandler è non vincolato al tipo System.EventArgs.Perché nessun vincolo su EventHandler <TEventArgs>?

Ecco i documenti in linea:

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

Si tratta di una mancata corrispondenza tra documenti e l'attuazione?

Chiedo perché sono curioso. Non è affatto una lamentela.

+1

mi chiedo cosa succede se si costruisce con Visual Studio 2012 (.net 4.5) e tenta di eseguire su una macchina senza .net 4.5. (Non su una macchina con vs 2012 quindi non posso controllare ora) – Will

risposta

5

Il vincolo del tipo è stato rimosso in .net 4.5.

Ecco la firma .net 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 
) 

Ecco il .net firma 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

dato che la documentazione non è cambiata in MSDN mi chiedo se abbiamo trovato un bug minore qui –

+0

Immagino che questa modifica sia stata intenzionale. Probabilmente hanno semplicemente dimenticato di aggiornare l'osservazione della pagina di msdn. Non sono sicuro di dove riferisci quel genere di cose. – Will

+0

Nota a margine: l'avviso [CA1009] (https://msdn.microsoft.com/en-us/library/ms182133.aspx) non è scomparso, pertanto l'utilizzo di qualsiasi cosa non derivante da EventArgs verrà comunque attivato un avviso FxCop. –

Problemi correlati