static void Main(string[] args) { Thermostat thermostat = new Thermostat(); Heater heater = new Heater(30); Cooler cooler = new Cooler(40); thermostat.Add_TemperatureChanged(heater.OnTemperatureChanged); thermostat.Add_TemperatureChanged(cooler.Update); thermostat.EmulateTemperatureChange(); thermostat.Remove_TemperatureChanged(cooler.Update); thermostat.EmulateTemperatureChange(); Type type = thermostat.GetType(); foreach (var t in type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { Console.WriteLine(t.Name); } Console.ReadKey(); }