您可以订阅一个接口,然后发布该接口的实现。

我们来看一个例子。 我有一个接口IAnimal和两个实现猫和狗:

public interface IAnimal
{string Name { get; set; }
}public class Cat : IAnimal
{public string Name { get; set; }public string Meow { get; set; }
}public class Dog : IAnimal
{public string Name { get; set; }public string Bark { get; set; }
}

我可以订阅IAnimal并获得猫和狗类:

bus.Subscribe<IAnimal>("polymorphic_test", @interface =>{var cat = @interface as Cat;var dog = @interface as Dog;if (cat != null){Console.Out.WriteLine("Name = {0}", cat.Name);Console.Out.WriteLine("Meow = {0}", cat.Meow);}else if (dog != null){Console.Out.WriteLine("Name = {0}", dog.Name);Console.Out.WriteLine("Bark = {0}", dog.Bark);}else{Console.Out.WriteLine("message was not a dog or a cat");}});

让我们发布一只猫和一只狗:

var cat = new Cat
{Name = "Gobbolino",Meow = "Purr"
};var dog = new Dog
{Name = "Rover",Bark = "Woof"
};bus.Publish<IAnimal>(cat);
bus.Publish<IAnimal>(dog);

请注意,我必须明确指定我发布IAnimal。 EasyNetQ使用“发布”和“订阅”方法中指定的泛型类型将发布路由到订阅。

转载于:https://www.cnblogs.com/zd1994/p/8650968.html

8,EasyNetQ-多态发布和订阅相关推荐

  1. 面试被问到Redis实现发布与订阅,手摸手教

    简介 Redis发布与发布功能(Pub/Sub)是基于事件座位基本的通信机制,是目前应用比较普遍的通信模型,它的目的主要是解除消息的发布者与订阅者之间的耦合关系. Redis作为消息发布和订阅之间的服 ...

  2. Meteor:发布与订阅

    我们可以使用安全的方法让用户端不直接操作数据库,但是还是可以直接读取数据库内容,如果我们还需要保护私有的数据存储,在客户端直接使用Collection.find(),这样的操作方式在实际的项目中并不会 ...

  3. 知方可补不足~SQL2008中的发布与订阅模式~续

    上一回介绍了如何在sql2008中建立一个数据库的发布者,今天来说一下如何建立一个订阅者,其实订阅者也是一个数据库,而这个数据库是和发布者的数据结构相同的库,它们之间通过SQL代理进行数据上的同步. ...

  4. etcd分布式之消息发布与订阅

    分布式之消息发布与订阅:        应用中用到的一些配置信息放到etcd上进行集中管理        索引的元信息和服务器集群机器的节点状态存放在etcd中        分布式日志收集系统   ...

  5. 023_Jedis的发布和订阅

    1. Redis为我们提供了publish/subscribe(发布/订阅)功能.我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布) ...

  6. Redis发布与订阅(pub/sub)

    Redis发布与订阅(pub/sub) 本文档翻译自: http://redis.io/topics/pubsub . SUBSCRIBE . UNSUBSCRIBE 和 PUBLISH 三个命令实现 ...

  7. RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)

    2019独角兽企业重金招聘Python工程师标准>>> 发布/订阅 在上篇教程中,我们搭建了一个工作队列.每个任务之分发给一个工作者(worker).在本篇教程中,我们要做的之前完全 ...

  8. Redis实现发布与订阅(转)

    简介 Redis发布与发布功能(Pub/Sub)是基于事件座位基本的通信机制,是目前应用比较普遍的通信模型,它的目的主要是解除消息的发布者与订阅者之间的耦合关系. Redis作为消息发布和订阅之间的服 ...

  9. Redis中的发布与订阅的概念与以命令行的方式实现发布订阅举例

    场景 什么是发布与订阅 发布订阅是一种应用程序(系统)之间通讯,传递数据的技术手段,特别是在异构(不同语言)系统之间的作用非常明显. 发布订阅: 类似于微信中关注公众号/订阅号,公众号/订阅号发布的文 ...

  10. Redis中的发布与订阅

    redis中实现发布与订阅相对于zookeeper非常简单.直接使用publish和subscribe就行. subscrible news; 订阅news这个channel publish news ...

最新文章

  1. 技术图文:NumPy 的简单入门教程
  2. HTML form 标签的 accept-charset 属性
  3. C++:从子类访问父类的私有函数
  4. STM32 基础系列教程 1- CubeMX+GPIO
  5. python gui界面启动脚本、点击按钮执行脚本_如何使用PyQt在按钮单击上调用python脚本...
  6. 从setTimeout,onclick传参看js函数作为参数
  7. canopy算法流程_Canopy聚类算法(经典,看图就明白)
  8. JavaScript类型强制解释
  9. Spring Cloud 微服务实战系列-Spring Boot再次入门(一)
  10. 接口测试用例设计思路_基于python语言的接口自动化demo小实战
  11. python manager模块_Python 并发模块
  12. boolean怎么用_用 C++ 和 Java 写算法,差别大吗?(文末有福利)
  13. Qt获取本机硬盘序列号,不受IDE硬盘与SCSI硬盘类型影响
  14. PC蓝牙加串口调试助手调试蓝牙设备
  15. 树莓派/Ubuntu联网以及查看本机的IP
  16. QT系列之曲线图绘制(推荐QCustomPlot)
  17. 特技替身拜拜,迪士尼机器超人要上天了!
  18. 扫雷小游戏(两小时完成)
  19. 永恒之蓝ms17_010漏洞复现
  20. 第四章 资本主义制度的形成及其本质

热门文章

  1. long 雪花算法_深入分析mysql为什么不推荐使用uuid或者雪花id作为主键
  2. php小总结之 mysqli面向过程、面向对象和PDO在增删改查使用中的一些小区别
  3. 二十三、Java异常捕获与处理
  4. 最长单调递增子序列——动态规划
  5. centos7.x 网卡自动关闭,总是需要手动去启动情况解决方法
  6. 拉取 google.golang.org/grpc 报错
  7. JQuery 实现表格数据行上移与下移效果
  8. 获取json格式的内容数据时,使用的方法避免空指针
  9. 从 AVFrame 中取出帧(YUV)保存为 Mat 格式
  10. vs 2012/2013 等工具中,使用正则表达式,查找、替换