1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| // Argument d'événement
public class ValueEmittedEventArgs<T> : EventArgs
{
public ValueEmittedEventArgs(T value) => Value = value;
public T Value { get; }
}
// delegate d'événement
public delegate void ValueEmittedEventHandler<T>(object sender, ValueEmittedEventArgs<T> e);
// Interface déclarant un événement de type ValueEmittedEventHandler<T>
public interface IValueEmitter<T>
{
event ValueEmittedEventHandler<T> ValueEmitted;
}
// Classe implémentant IValueEmitter<T> et invoquant l'événement
public class ValueRelay<T> : IValueEmitter<T>
{
public event ValueEmittedEventHandler<T> ValueEmitted;
public void Emit(T value) => ValueEmitted?.Invoke(this, new ValueEmittedEventArgs<T>(value));
} |
Partager