using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
public class EventBusArgs<T> : EventArgs
public EventBusArgs(T @value)
public class EventManager
private static Dictionary<EventType, EventHandler<EventArgs>> _eventBus;
_eventBus = new Dictionary<EventType, EventHandler<EventArgs>>();
public static void StartListening(EventType eventType, EventHandler<EventArgs> eventHandler)
if (_eventBus.ContainsKey(eventType))
_eventBus[eventType] += eventHandler;
_eventBus.Add(eventType, eventHandler);
StartListening(EventType.PrintInt1, PrintInt1);
private void PrintInt1(object sender, EventArgs eventArgs)
EventBusArgs<int> number = (EventBusArgs<int>)eventArgs;
Debug.Log($"the number in PrintInt1 is {number.Value}");