using System; using System.ComponentModel; using System.Linq.Expressions; using Developpez.Dotnet.Linq; namespace Developpez.Dotnet { /// /// Fournit des méthodes d'extension pour faciliter l'utilisation des évènements /// public static class EventExtensions { /// /// Déclenche un évènement en vérifiant si des handlers y sont abonnés /// /// L'évènement à déclencher /// L'objet à l'origine de l'évènement public static void Raise(this EventHandler pEvent, object sender) { pEvent.Raise(sender, EventArgs.Empty); } /// /// Déclenche un évènement en vérifiant si des handlers y sont abonnés /// /// L'évènement à déclencher /// L'objet à l'origine de l'évènement /// Les paramètres de l'évènement public static void Raise(this EventHandler pEvent, object sender, EventArgs e) { if (pEvent != null) pEvent(sender, e); } /// /// Déclenche un évènement en vérifiant si des handlers y sont abonnés /// /// Type des paramètres de l'évènement /// L'évènement à déclencher /// L'objet à l'origine de l'évènement /// Les paramètres de l'évènement public static void Raise(this EventHandler pEvent, object sender, TEventArgs e) where TEventArgs : EventArgs { if (pEvent != null) pEvent(sender, e); } /// /// Déclenche un évènement PropertyChanged en vérifiant si des handlers y sont abonnés /// /// L'évènement à déclencher /// L'objet à l'origine de l'évènement /// Le nom de la propriété qui a changé public static void Raise(this PropertyChangedEventHandler pEvent, object sender, string propertyName) { if (pEvent != null) pEvent(sender, new PropertyChangedEventArgs(propertyName)); } /// /// Déclenche un évènement PropertyChanged en vérifiant si des handlers y sont abonnés /// /// Type de la propriété qui a changé /// L'évènement à déclencher /// L'objet à l'origine de l'évènement /// L'expression indiquant la propriété qui a changé public static void Raise(this PropertyChangedEventHandler pEvent, object sender, Expression> expression) { string propertyName = LinqHelper.GetPropertyName(expression); pEvent.Raise(sender, propertyName); } } }