using System;
public class Events
{
public delegate void MyAction();
public event MyAction OriginalEvent = delegate { };
public event Action DelegatingEvent
{
add { OriginalEvent += new MyAction(value); }
remove { OriginalEvent
-= new MyAction
(value
); } }
public void FireOriginalEvent()
{
OriginalEvent();
}
}
public class Test
{
private static void PrintFoo()
{
Console.WriteLine("Foo");
}
public static void Main()
{
Console.WriteLine("Testing original event:");
Events events1 = new Events();
events1.OriginalEvent += PrintFoo;
events1.OriginalEvent -= PrintFoo;
events1.FireOriginalEvent();
Console.WriteLine("Testing delegating event:");
Events events2 = new Events();
events2.DelegatingEvent += PrintFoo;
events2.DelegatingEvent -= PrintFoo; // Doesn't actually remove anything!
events2.FireOriginalEvent();
Console.WriteLine("However, THIS works:");
Events events3 = new Events();
Action printFooAction = PrintFoo;
events3.DelegatingEvent += printFooAction;
events3.DelegatingEvent -= printFooAction;
events3.FireOriginalEvent();
}
}