public void SendSignalWithNoPara(EventSignalEnum eventSignal) { if (mEventDict0.ContainsKey(eventSignal)) { foreach (ActionWithNoPara action in mEventDict0[eventSignal]) { action(); } } }
public void SendSignalWithParaS <T>(EventSignalEnum eventSignal, params T[] paras) { if (mEventDictS.ContainsKey(eventSignal)) { foreach (Object action in mEventDictS[eventSignal]) { ActionWithParaS <T> actionWithParaS = action as ActionWithParaS <T>; if (actionWithParaS != null) { actionWithParaS(paras); } } } }
public void SendSignalWithPara2 <T1, T2>(EventSignalEnum eventSignal, T1 para1, T2 para2) { if (mEventDict2.ContainsKey(eventSignal)) { foreach (Object action in mEventDict2[eventSignal]) { ActionWithPara2 <T1, T2> actionWithPara2 = action as ActionWithPara2 <T1, T2>; if (actionWithPara2 != null) { actionWithPara2(para1, para2); } } } }
public void SendSignalWithPara1 <T>(EventSignalEnum eventSignal, T para) { if (mEventDict1.ContainsKey(eventSignal)) { foreach (Object action in mEventDict1[eventSignal]) { ActionWithPara1 <T> actionWithPara1 = action as ActionWithPara1 <T>; if (actionWithPara1 != null) { actionWithPara1(para); } } } }
//注册辅助函数 private void RegisterEvent(EventSignalEnum eventSignal, Object tag, Dictionary <EventSignalEnum, List <Object> > eventDict, Object action) { List <Object> actionList = null; if (eventDict.ContainsKey(eventSignal)) { actionList = eventDict[eventSignal]; } else { actionList = new List <Object>(); eventDict.Add(eventSignal, actionList); } actionList.Add(action); AddToTagList(tag, actionList, action); }
//任意参数事件 public void RegisterEventWithParaS <T>(EventSignalEnum eventSignal, Object tag, ActionWithParaS <T> actionWithParaS) { RegisterEvent(eventSignal, tag, mEventDictS, actionWithParaS); }
//双参数事件 public void RegisterEventWithPara2 <T1, T2>(EventSignalEnum eventSignal, Object tag, ActionWithPara2 <T1, T2> actionWithPara2) { RegisterEvent(eventSignal, tag, mEventDict2, actionWithPara2); }
//事件的注册与信号的发送 //无参数事件 public void RegisterEventWithNoPara(EventSignalEnum eventSignal, Object tag, ActionWithNoPara actionWithNoPara) { RegisterEvent(eventSignal, tag, mEventDict0, actionWithNoPara); }