using System; delegate void Handler (object sender); interface IBar { event Handler Handler; } class Foo { IBar proxy, real; event Handler handler; Handler proxyHandler; public event Handler Handler { add { if (handler == null) { if (proxyHandler == null) proxyHandler = (object s) => handler (proxy); } handler += value; } remove { handler -= value; } } } class Program { public static int Main () { var x = new Foo (); x.Handler += null; return 0; } }