using System; using System.Collections; class X { public event EventHandler Hook; public IEnumerator Pipeline () { if (Hook == null) throw new Exception ("error"); Hook (this, EventArgs.Empty); yield return 0; } static void M (object sender, EventArgs args) { Console.WriteLine ("Hook invoked"); } public static void Main () { X x = new X (); x.Hook += M; IEnumerator y = x.Pipeline (); y.MoveNext (); } }