EventHandler - RaiseEvent

n EventHandler extension method that raises the event event.

Try it

public static void Main()
{
    Adder a = new Adder();
    a.OnMultipleOfFiveReached += a_MultipleOfFiveReached;
    int iAnswer = a.Add(4, 3);
    Console.WriteLine("iAnswer = {0}", iAnswer);
    iAnswer = a.Add(4, 6);
    Console.WriteLine("iAnswer = {0}", iAnswer);
}

static void a_MultipleOfFiveReached(object sender, EventArgs e)
{
    Console.WriteLine("Multiple of five reached!");
}
}

public class Adder
{
public event EventHandler OnMultipleOfFiveReached;

public int Add(int x, int y)
{
    int iSum = x + y;
    if ((iSum % 5 == 0) && (OnMultipleOfFiveReached != null))
    {
		//C# Extension Method: EventHandler - RaiseEvent
        OnMultipleOfFiveReached.RaiseEvent(EventArgs.Empty);
    }
    return iSum;
}

View Source
using System;

public static partial class Extensions
{
    /// <summary>
    ///     An EventHandler extension method that raises the event event.
    /// </summary>
    /// <param name="this">The @this to act on.</param>
    /// <param name="sender">Source of the event.</param>
    public static void RaiseEvent(this EventHandler @this, object sender)
    {
        if (@this != null)
        {
            @this(sender, null);
        }
    }

    /// <summary>
    ///     An EventHandler extension method that raises.
    /// </summary>
    /// <param name="handler">The handler to act on.</param>
    /// <param name="sender">Source of the event.</param>
    /// <param name="e">Event information.</param>
    public static void Raise(this EventHandler handler, object sender, EventArgs e)
    {
        if (handler != null)
            handler(sender, e);
    }

    /// <summary>
    ///     An EventHandler&lt;TEventArgs&gt; extension method that raises the event event.
    /// </summary>
    /// <typeparam name="TEventArgs">Type of the event arguments.</typeparam>
    /// <param name="this">The @this to act on.</param>
    /// <param name="sender">Source of the event.</param>
    public static void RaiseEvent<TEventArgs>(this EventHandler<TEventArgs> @this, object sender) where TEventArgs : EventArgs
    {
        if (@this != null)
        {
            @this(sender, Activator.CreateInstance<TEventArgs>());
        }
    }

    /// <summary>
    ///     An EventHandler&lt;TEventArgs&gt; extension method that raises the event event.
    /// </summary>
    /// <typeparam name="TEventArgs">Type of the event arguments.</typeparam>
    /// <param name="this">The @this to act on.</param>
    /// <param name="sender">Source of the event.</param>
    /// <param name="e">Event information to send to registered event handlers.</param>
    public static void RaiseEvent<TEventArgs>(this EventHandler<TEventArgs> @this, object sender, TEventArgs e) where TEventArgs : EventArgs
    {
        if (@this != null)
        {
            @this(sender, e);
        }
    }
}