Example #1
0
 /// <summary>
 /// 单参数事件注册
 /// </summary>
 /// <typeparam name="T">接收器参数类型</typeparam>
 /// <param name="eventSignal">需要响应的信号</param>
 /// <param name="tag">接收器的标记</param>
 /// <param name="receiverWithPara1">单参接收器</param>
 public void RegisterEventWithPara1 <T>(EventSignalEnum eventSignal, Object tag, ReceiverWithPara1 <T> receiverWithPara1)
 {
     RegisterEvent(mEventDict1, eventSignal, tag, receiverWithPara1);
 }
Example #2
0
 //执行事件辅助函数,helperReceiver仅仅用来传递逻辑,没有实际含义
 private void ExecEvent <T>(Dictionary <EventSignalEnum, List <ReceiverHolder> > eventDict, EventSignalEnum eventSignal, ReceiverWithPara1 <T> helperReceiver) where T : class
 {
     if (eventDict.ContainsKey(eventSignal))
     {
         //这里对要执行的接收器进行了一次copy,避免执行接收器的过程中数组变动
         List <ReceiverHolder> receiverList = new List <ReceiverHolder>(eventDict[eventSignal]);
         foreach (ReceiverHolder receiverHolder in receiverList)
         {
             T receiver = receiverHolder.GetReceiver <T>();
             //检测接收器是否是激活的
             if (receiver != null)
             {
                 helperReceiver(receiver);
             }
         }
     }
 }