2010-06-19 9 views
6

Tengo un número de clases EventArgs con sólo un campo y una propiedad adecuada para leerlo:EventArgs genéricos incorporados para mantener solo una propiedad?

public class SomeEventArgs : EventArgs 
{ 
    private readonly Foo f; 
    public SomeEventArgs(Foo f) 
    { 
     this.f = f; 
    } 
    public Foo Foo 
    { 
     get { return this.f; } 
    }  
} 

¿Hay alguna clase genérica incorporada para poner en práctica este tipo de comportamiento o tengo que rodar mi propia?

public class GenericEventArgs<T> : EventArgs 
{ 
    private readonly T value; 
    public GenericEventArgs(T v) 
    { 
     this.value = v; 
    } 
    public T Value 
    { 
     get { return this.value; } 
    }  
} 

P.S. escribí un suggestion on Microsoft Connect

+1

Existen implementaciones de 'DataEventArgs ' en algunos ensamblados/espacios de nombres de Microsoft. Ver también: http://stackoverflow.com/questions/3312134/does-net-have-a-built-in-eventargst/15896769#15896769 –

Respuesta

1

No creo que exista.
Parece que no eres el único que se hace esta pregunta.
Tome una mirada here

3

Si hay es uno, desde luego, no está bien publicitado! (es decir, no es algo que se llame para uso general, como Func<T>). He pensado en lo mismo antes. No es un requisito raro, IMO.

Una desventaja de esto es que no tiene un nombre significativo para la propiedad, por supuesto, es como un EventArgs equivalente de Tuple. Pero si tiene varios casos de uso diferentes para este y será realmente obvio cuál es el significado, adelante :)

+0

@ El enlace de Itay sigue al nombre interesante: simplemente 'EventArgs '. ¡Es muy interesante por qué FCL todavía no contiene una clase tan útil! – abatishchev

Cuestiones relacionadas