你能够订阅一个接口,然后发布基于这个接口的实现。

让我们看下一个示例。我有一个接口IAnimal和两个实现Cat和Dog:

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接口,并接收Cat和Dog这个两个类:

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

让我们发布Cat和Dog:

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://github.com/EasyNetQ/EasyNetQ/wiki/Polymorphic-Publish-and-Subscribe

本文地址:http://www.cnblogs.com/HuangLiang/p/EasyNetQ_Polymorphic_Publish_and_Subscribe.html

最新文章

  1. UML类图关系--继承(泛化)、实现、关联、聚合、组合、依赖
  2. android gradle NDK简介
  3. SSR———团队作业:小型论坛的设计与初步实现
  4. windows 下安装 mysql
  5. iOS开发代码规范(通用)
  6. 粉笔网iPhone端使用的第三方开源库
  7. iOS - UI - UIActivityIndicatorView
  8. Morris Traversal
  9. 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)
  10. CSS围住浮动元素的三种方法
  11. 百度搜索URL参数 搜索关键字
  12. 《跟我学IDEA》五、快捷键(编码利器)
  13. 将preg_replace()改写为preg_replace_callback()
  14. 3 Asking for more information
  15. EL表达式 EL函数 自定义el函数 《黑马程序员_超全面的JavaWeb视频教程vedio》
  16. Python图表数据可视化Seaborn:1. 风格| 分布数据可视化-直方图| 密度图| 散点图
  17. M100 对频
  18. list.remove出错 报 Not source之类的错误
  19. blktrace分析IO
  20. mybatis由浅入深day02_7.4mybatis整合ehcache_7.5二级缓存应用场景_7.6二级缓存局限性

热门文章

  1. idea远程debug调试设置
  2. LeetCode OJ:4Sum(4数字之和)
  3. 关于HashMap,HashTable,HashSet浅析
  4. CSS3 Media Query 响应式媒体查询
  5. [Scala]Scala学习笔记二 数组
  6. NOIP模拟题 友好国度
  7. 解决direct2d拖拽窗口闪烁
  8. Servlet和JSP规范与Tomcat版本对应关系
  9. 更新pip
  10. Tornado输出和响应头