using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace JwKdsV.Core.MessageEvent
{
///
/// 消息事件管理器
///
public class MsgEventsContainer
{
public MsgEventsContainer()
{
eventsList = new Dictionary();
}
#region 属性|字段
private Dictionary eventsList;
#endregion
#region 方法
public void AddListener(string msgType , EventHandler func , object _receiver , bool isOnce)
{
if (eventsList.ContainsKey(msgType) == false)
{
MsgEventProvider _msgEventProvider = new MsgEventProvider(msgType);
eventsList.Add(msgType , _msgEventProvider);
}
MsgEventProvider msgEventProvider = eventsList[msgType];
#region 构建消息接收对象
MsgReceiver receiver = new MsgReceiver();
receiver.IsOnce = isOnce;
receiver.ReceiverObj = _receiver;
receiver.appEventHandler = func;
#endregion
msgEventProvider.AddListener(receiver);
}
public void RemoveListener(string msgType , EventHandler func , object _receiver)
{
if (eventsList.ContainsKey(msgType) == false) return;
MsgEventProvider msgEventProvider = eventsList[msgType];
#region 构建消息接受者对象
MsgReceiver receiver = new MsgReceiver();
receiver.IsOnce = true;
receiver.ReceiverObj = _receiver;
receiver.appEventHandler = func;
#endregion
msgEventProvider.RemoveListener(receiver);
}
public void Run(Object sender , MsgEventArgs args)
{
string msgType = args.EventType;
//未存在注册的消息事件,则直接返回
if (eventsList.ContainsKey(msgType) == false) return;
MsgEventProvider msgEventProvider = eventsList[msgType];
msgEventProvider.Run(sender , args);
}
public MsgEventProvider GetAllProvider(string msgType)
{
if (eventsList.ContainsKey(msgType) == false) return null;
return eventsList[msgType];
}
#endregion
}
}