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