c#为事件订阅存储在字典中的委托
本文关键字:字典 存储 事件 | 更新日期: 2023-09-27 18:17:10
我正在c#中工作,该系统将匿名委托保存到字典(允许我稍后取消绑定)并将其绑定到事件:
public static Dictionary<int, Dictionary<List<string>,Action>> boundActions;
public delegate void EventListener();
public Dictionary<int,EventListener> listenerMap;
public void bindListener(int actionID, List<string> actionArgs, int listenerID)
{
boundActions[actionID][actionArgs]=delegate(){actions.getAction(actionID, actionArgs).Invoke ();};
listenerMap[listenerID]+=boundActions[actionID][actionArgs];
}
public void unbindListener(int actionID, List<string> actionArgs, int listenerID)
{
listenerMap[listenerID]-=boundActions[actionID][actionArgs];
}
然而,这种方法不能编译,给我以下错误:
错误CS0019:操作符'+='不能应用于类型的操作数
ItemListeners.EventListener
和System.Action
错误CS0019:操作符'-='不能应用于类型的操作数
ItemListeners.EventListener
和System.Action
我处理问题的方法不正确吗?有没有更好的方法,或者我可以让它这样工作?也许类型Action
是错误的?
提前感谢!
check this
public static Dictionary<int, Dictionary<List<string>, EventListener>> boundActions;
public delegate void EventListener();
public Dictionary<int, EventListener> listenerMap;
public void bindListener(int actionID, List<string> actionArgs, int listenerID)
{
boundActions[actionID][actionArgs] = new EventListener(delegate { actions.getAction(actionID, actionArgs).Invoke(); });
listenerMap[listenerID] += boundActions[actionID][actionArgs];
}
public void unbindListener(int actionID, List<string> actionArgs, int listenerID)
{
listenerMap[listenerID] -= boundActions[actionID][actionArgs];
}