Exemplo n.º 1
0
 public void SubscribeEvent(string name, EventBusHandler busHandler)
 {
     if (events.ContainsKey(name))
     {
         events[name] += busHandler;
     }
 }
Exemplo n.º 2
0
 public void PublishEvent(string name, EventBusHandler busHandler)
 {
     if (!events.ContainsKey(name))
     {
         events.Add(name, busHandler);
     }
 }
Exemplo n.º 3
0
 /// <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);
         }
 }
Exemplo n.º 4
0
 /// <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);
         }
 }
Exemplo n.º 5
0
 /// <summary>
 /// 取消订阅事件
 /// </summary>
 /// <param name="handler">事件处理方法</param>
 public void UnSubscribe <T>(EventBusHandler <T> handler)
 {
     lock (filterInfos.SyncRoot)
         if (filterInfos.Contains(handler))
         {
             filterInfos.Remove(handler);
         }
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 /// <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);
 }
Exemplo n.º 8
0
 /// <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);
 }
Exemplo n.º 9
0
 /// <summary>
 /// 取消订阅事件
 /// </summary>
 /// <param name="handler">事件处理方法</param>
 public static void UnSubscribe <T>(EventBusHandler <T> handler)
 {
     EventFactory.Instance.UnSubscribe <T>(handler);
 }
Exemplo n.º 10
0
 /// <summary>
 /// 订阅事件
 /// </summary>
 /// <param name="handler">事件处理方法</param>
 public static void Subscribe <T>(EventBusHandler <T> handler)
 {
     DomainEventFactory.Instance.Subscribe <T>(handler);
 }