public void SubscribeEvent(string name, EventBusHandler busHandler) { if (events.ContainsKey(name)) { events[name] += busHandler; } }
public void PublishEvent(string name, EventBusHandler busHandler) { if (!events.ContainsKey(name)) { events.Add(name, busHandler); } }
/// <summary> /// 订阅满足过滤条件的事件 /// </summary> /// <param name="handler">事件处理方法</param> /// <param name="filter">事件过滤方法</param> public void Subscribe <T>(EventBusHandler <T> handler, Func <T, bool> filter) { lock (filterInfos.SyncRoot) if (!filterInfos.Contains(handler)) { filterInfos.Add(handler, filter); } }
/// <summary> /// 订阅指定的事件类型 /// </summary> /// <param name="handler">消息处理方法</param> /// <param name="filter">需要订阅的事件类型数组</param> public void Subscribe <T>(EventBusHandler <T> handler, Type[] filter) { lock (filterInfos.SyncRoot) if (this.ValidateContains <T>(handler)) { filterInfos.Add(handler, filter); } }
/// <summary> /// 取消订阅事件 /// </summary> /// <param name="handler">事件处理方法</param> public void UnSubscribe <T>(EventBusHandler <T> handler) { lock (filterInfos.SyncRoot) if (filterInfos.Contains(handler)) { filterInfos.Remove(handler); } }
private bool ValidateContains <T>(EventBusHandler <T> handler) { //if (!filterInfos.Contains(handler)) // return true; var flag = true; foreach (Delegate item in filterInfos.Keys) { if (item.Target == handler.Target && item.Method.Name == handler.Method.Name && item.Method.GetParameters().Length == handler.Method.GetParameters().Length) { flag = false; break; } } return(flag); }
/// <summary> /// 订阅满足过滤条件的事件 /// </summary> /// <param name="handler">事件处理方法</param> /// <param name="filter">事件过滤方法</param> public static void Subscribe <T>(EventBusHandler <T> handler, Func <T, bool> filter) { EventFactory.Instance.Subscribe <T>(handler, filter); }
/// <summary> /// 订阅指定的事件类型 /// </summary> /// <param name="handler">消息处理方法</param> /// <param name="filter">需要订阅的事件类型数组</param> public static void Subscribe <T>(EventBusHandler <T> handler, Type[] filter) { EventFactory.Instance.Subscribe <T>(handler, filter); }
/// <summary> /// 取消订阅事件 /// </summary> /// <param name="handler">事件处理方法</param> public static void UnSubscribe <T>(EventBusHandler <T> handler) { EventFactory.Instance.UnSubscribe <T>(handler); }
/// <summary> /// 订阅事件 /// </summary> /// <param name="handler">事件处理方法</param> public static void Subscribe <T>(EventBusHandler <T> handler) { DomainEventFactory.Instance.Subscribe <T>(handler); }