很好理解就不罗嗦了直接上代码
public class CustomEventListener
{
public CustomEventListener() { }
public delegate void ListenerDelegate(object evt);
public event ListenerDelegate OnEvent;
public void Excute(object evtParams)
{
if (OnEvent != null)
{
this.OnEvent(evtParams);
}
}
}
public class EventManager
{
private static Dictionary<string, CustomEventListener> eventListenerDict = new Dictionary<string, CustomEventListener>();
public static void AddListener(string eventType, CustomEventListener.ListenerDelegate callback)
{
if (!eventListenerDict.ContainsKey(eventType))
{
eventListenerDict.Add(eventType, new CustomEventListener());
}
eventListenerDict[eventType].OnEvent += callback;
}
public static void RemoveListener(string eventType, CustomEventListener.ListenerDelegate callback)
{
if (eventListenerDict.ContainsKey(eventType))
{
eventListenerDict[eventType].OnEvent -= callback;
callback = null;
}
}
public static void Dispatch(string eventType, object eventParams = null)
{
if (eventListenerDict.ContainsKey(eventType))
{
CustomEventListener eventListener = eventListenerDict[eventType];
if (eventListener == null) return;
eventListener.Excute(eventParams);
}
}
public static bool HasListener(string eventType)
{
return eventListenerDict.ContainsKey(eventType);
}
}