namespace //消息中心
{
/// <summary>
/// 消息中心
/// </summary>
public delegate void Callback();
class MessageCenter
{
/// <summary>
/// 缓存消息的容器
/// </summary>
Dictionary<string, Delegate> dic = new Dictionary<string, Delegate>();
/// <summary>
/// 添加事件侦听
/// </summary>
/// <param name="name">消息名字</param>
/// <param name="back">处理的函数(回调的函数)</param>
public void AddEvenListener(string name,Callback back)
{
if(dic.ContainsKey(name))
{
//dic[name] as CallBack 向下转型还原成子类
//dic[name] as CallBack + back 子类相加 多播委托
//dic[name]=dic[name] as CallBack + back;子类赋值给父类 向上转型
dic[name] = dic[name] as Callback + back;
}
else
{
dic.Add(name, back);
}
}
/// <summary>
/// 移除事件侦听
/// </summary>
/// <param name="name">消息名字</param>
/// <param name="back">回调函数</param>
public void RemoveEventListener(string name, Callback back)
{
if (dic.ContainsKey(name))
{
dic[name] = dic[name] as Callback - back;
}
}
/// <summary>
/// 广播消息
/// </summary>
/// <param name="name">消息名称</param>
public void BroadCast(string name)
{
if (dic.ContainsKey(name))
{
Callback back = dic[name] as Callback;
if (back != null)
{
back();
}
}
}
}
}
namespace //单例
{
class Singetoln<T> where T : class, new()
{
private static readonly object obj = new object();
private static T instance;
protected Singetoln() { }
public static T GetSingetoln()
{
if (instance == null)
{
lock (obj)
{
if (instance == null)
{
instance = new T();
}
}
}
return instance;
}
}
}
c#_消息中心创建
最新推荐文章于 2024-07-09 14:14:16 发布