/// <summary> /// 获得处理函数 /// </summary> /// <typeparam name="TMessage"></typeparam> /// <param name="mq"></param> /// <returns></returns> public static Action <TMessage> Get <TMessage>(this IMQ mq) { Action <TMessage> actionMessage = null; var key = NameUtils.Get <TMessage>(); object @object = null; if (GetSotrage(mq).TryGetValue(key, out @object)) { actionMessage = @object as Action <TMessage>; } if (actionMessage == null) { return(m => { var log = ServiceFacade.Provider .GetService <ILog <IMQ> >(); log?.Info($"订阅函数:\"{key}\"不存在"); }); } else { return(actionMessage); } }
/// <summary> /// 添加事件处理 /// </summary> /// <typeparam name="TMessage"></typeparam> /// <param name="mq"></param> /// <param name="action"></param> /// <returns></returns> public static void Add <TMessage>(this IMQ mq, Action <TMessage> action) { Action <TMessage> actionMessage = null; var key = NameUtils.Get <TMessage>(); object @object; lock (_store) { var dic = GetSotrage(mq); if (dic.TryGetValue(key, out @object)) { actionMessage = @object as Action <TMessage>; actionMessage += action; } else { actionMessage = action; } dic[key] = actionMessage; //_store.AddOrUpdate(key, actionMessage, (a, b) => actionMessage); } }
/// <summary> /// 消息是否被订阅过,<see cref="bool.TrueString"/>订阅过,<see cref="bool.FalseString"/>尚未订阅 /// </summary> /// <typeparam name="TMessage"></typeparam> /// <param name="mq"></param> /// <returns></returns> public static bool IsExist <TMessage>(this IMQ mq) { var key = NameUtils.Get <TMessage>(); return(_store.ContainsKey(key)); }