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