/// <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); }
//执行事件辅助函数,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); } } } }