| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Reflection;
 
- /// <summary>
 
- /// 消息发布订阅(非线程安全)
 
- /// </summary>
 
- public class Messenger
 
- {
 
-     public static Messenger Defalut = new Messenger();
 
-     //支持重复key的字典
 
-     Dictionary<string, List<dynamic>> cache = new Dictionary<string, List<dynamic>>();
 
-     private Messenger()
 
-     {
 
-     }
 
-     public void Sub<T>(string key, Action<T> act)
 
-     {
 
-         if (!cache.ContainsKey(key))
 
-             cache.Add(key, new List<dynamic>());
 
-         cache[key].Add(act);
 
-     }
 
-     public void UnSub<T>(string key, Action<T> act)
 
-     {
 
-         if (cache.ContainsKey(key))
 
-         {
 
-             var items = cache[key].Skip(0).ToList();
 
-             foreach (var item in items)
 
-             {
 
-                 if (item is Action<T> actExist)
 
-                 {
 
-                     cache[key].Remove(actExist);
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     public void Pub<T>(string key, T data)
 
-     {
 
-         if (cache.TryGetValue(key, out List<dynamic> list))
 
-         {
 
-             foreach (var item in list)
 
-             {
 
-                 if (item is Action<T> act)
 
-                 {
 
-                     act?.Invoke(data);
 
-                 }
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |