public static THandler Create(EventHandler <TArgs> handler) { var helper = new SingleUseEventHandler <TArgs, THandler>(handler); EventHandler <TArgs> h = helper.InvokeIfFirstTime; return((THandler)(object)Delegate.CreateDelegate(typeof(THandler), h.Target, h.Method)); }
static void Main(string[] args) { MyEvent += SingleUseEventHandler <AssemblyLoadEventArgs, AssemblyLoadEventHandler> .Create(Load); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { Console.WriteLine("Raising event for " + assembly.GetName().Name); MyEvent(null, new AssemblyLoadEventArgs(assembly)); } }