站长之家whois,关键词seo是什么,购物平台需要什么资质,排名公式文章目录 前言模拟消息订阅发布使用注意事项 前言
我想做个简单的消息发布订阅功能#xff0c;但是发现好像没有现成的工具类。要么就是Mqtt这种消息订阅发布。但是我只想程序内部进行消息订阅发布#xff0c;进行程序的解耦。那没办法了#xff0c;只能自己上了
模拟消息… 文章目录 前言模拟消息订阅发布使用注意事项 前言
我想做个简单的消息发布订阅功能但是发现好像没有现成的工具类。要么就是Mqtt这种消息订阅发布。但是我只想程序内部进行消息订阅发布进行程序的解耦。那没办法了只能自己上了
模拟消息订阅发布
在Utils 的MessageHelper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace NetCore.Utils
{public class MessageHelper{public static ListMessage Messages new ListMessage();/// summary/// 消息订阅/// /summarypublic static void Subscribe(string topic, string key, Actionobject action){var model Messages.Where(item item.Topic topic item.Key key).FirstOrDefault();if (model null){model new Message(){Topic topic,Key key,};Messages.Add(model);model.Actions.Add(action);}else if(model.Actions.Find(item item.Equals(action)) null){model.Actions.Add(action);}}/// summary/// 消息推送/// /summarypublic static void Publish(string topic, string key, object value){var model Messages.Where(item item.Topic topic item.Key key).FirstOrDefault();if (model ! null){model.Actions.ForEach(item {item(value);});}}}public class Message{public string Topic { get; set; }public string Key { get; set; }public ListActionobject Actions { get; set; } new ListActionobject();}}
使用
static void Main(string[] args)
{MessageHelper.Subscribe(Topic1, key1, (res) {var _res ((string Name, int Age))res;Console.WriteLine(_res.ToString());Console.WriteLine(我被调用了1);});MessageHelper.Subscribe(Topic2, key1, (res) {Console.WriteLine(我被调用了2);});MessageHelper.Subscribe(Topic3, key1, (res) {Console.WriteLine(我被调用了3);});MessageHelper.Subscribe(Topic4, key1, (res) {Console.WriteLine(我被调用了4);});MessageHelper.Publish(Topic1,key1,(Name:嘟嘟,Sex:12));Console.ReadLine();}注意事项
这里我用了元祖来进行临时变量的传值。元祖如何使用请看我的另一篇文章。元祖用来做临时变量特别好用
C# 元祖最佳的临时变量。
为了防止重复注入我加了判断代码。