Às vezes, você deseja um manipulador de eventos simples em C # que passará um valor único, por exemplo, uma string. O tipo EventHandler <T> padrão espera que o tipo T genérico herde EventArgs, o que requer a criação de uma nova classe que herde EventArgs. Para passar uma string simples ou um número, isso é simplesmente código clichê demais.
Mas podemos criar uma classe EventArgs genérica, algo que está faltando no FCL e que envolverá nossa variável, satisfazendo assim EventHandler <T>.
public class EventArgs<T> : EventArgs
{
public T Value { get; private set; }
public EventArgs(T val)
{
Value = val;
}
}
Você declara seu evento com a seguinte sintaxe:
public event EventHandler<EventArgs<string>> StringReceivedEvent;
O seguinte snippet demonstra como usá-lo:
public void OnStringReceived()
{
if (StringReceivedEvent != null)
StringReceivedEvent(this, new EventArgs<string>(somestring));
}
// client code
StringReceivedEvent += (o, e) => Console.WriteLine(e.Value);