[英]C# subscribing delegates stored in a dictionary to an event
我在使用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
類型錯誤?
提前致謝!
檢查這個
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];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.