public delegate void Notify();
public event Notify OnButtonClicked;
public void RemoveAllListener()
public void SimulateButtonClick()
Console.WriteLine("[Button]: Button Clicked");
if (OnButtonClicked != null)
Console.WriteLine("[Form]: Submit form data");
public class AudioManager
public static void PlayClickSFX()
Console.WriteLine("[AudioManager]: Play click SFX");
public class LoadingBar : EventHandlerBase
public event Notify OnLoadingCompleted;
public void SimulateLoadingComplete()
public static void Main(string[] args)
Button submitButton = new Button();
Form userRegistrationForm = new Form();
LoadingBar loadingBar = new LoadingBar();
submitButton.OnButtonClicked += userRegistrationForm.Submit;
submitButton.OnButtonClicked += AudioManager.PlayClickSFX;
loadingBar.OnLoadingCompleted += SceneManager.LoadScene;
submitButton.SimulateButtonClick();
loadingBar.SimulateLoadingComplete();
public class EventHandlerBase
public delegate void Notify();
public class Button : EventHandlerBase
public class LoadingBar : EventHandlerBase
public event Notify OnLoadingCompleted;
public void SimulateLoadingComplete()