using System.Reflection; class Cage_en_metal { public event EventHandler ecraser; public Cage_en_metal() { ecraser += new EventHandler(Libellule_ecraser); fireEvent("ecraser", new EventArgs()); } void Libellule_ecraser(object sender, EventArgs e) { Console.WriteLine("Splatch !"); } void fireEvent(string handler, EventArgs eventArgs) { var eventInfo = this.GetType().GetField(handler, BindingFlags.Instance | BindingFlags.NonPublic); if (eventInfo != null) { var event_member = eventInfo.GetValue(this); // Note : If event_member is null, nobody registered to the event, you can't call it. if (event_member != null) event_member.GetType().GetMethod("Invoke").Invoke(event_member, new object[] { this, eventArgs }); } } }