11-EasyNetQ之多态发布和订阅
你能够订阅一个接口,然后发布基于这个接口的实现。
让我们看下一个示例。我有一个接口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
11-EasyNetQ之多态发布和订阅的更多相关文章
- EasyNetQ之多态发布和订阅
你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name ...
- 【EasyNetQ】- 多态发布和订阅
您可以订阅接口,然后发布该接口的实现. 我们来看一个例子.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name { get ...
- EasyNetQ使用(六)【多态发布和订阅,消息版本控制】
你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name ...
- redis 笔记06 发布与订阅、事务、慢查询日志、监视器
发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系:SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面,而UNSUBSCRIBE命令则负责 解除客 ...
- SQL SERVER发布与订阅 [原创]
一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...
- 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ
本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...
- Zookeeper实现数据的发布和订阅
使用场景 当一个对象的改变,需要通知其他对象而且不知道要通知多少个对象,可以使用发布订阅模式 .在分布式中的应用有配置管理(Configuration Management) .集群管理 ...
- 8,EasyNetQ-多态发布和订阅
您可以订阅一个接口,然后发布该接口的实现. 我们来看一个例子. 我有一个接口IAnimal和两个实现猫和狗: public interface IAnimal { string Name { get; ...
- SQL SERVER发布与订阅
一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...
随机推荐
- dojo学习教程
Dojo 作为最著名的 Ajax 开源项目之一,不仅让 Web 程序员可以免费获得和使用其框架进行 Web 应用的开发,更吸引了大量的开发者对其不断的扩充,开发新的组件.DojoX 就是在这样的开发社 ...
- javaScript-条件语句优化
1.多重判断时使用 Array.includes test = (fruit: string) => { if (fruit == 'apple' || fruit == 'strawberry ...
- react antd form多组表单数据处理
import React from 'react'; import {Form, InputNumber, Input, DatePicker, Button, Select, Icon} from ...
- antd-iconfont for inner network
npm install antd-iconfont --save npm install less less-loader --save-dev webpack.config.js const pat ...
- JQuery动态隐藏和显示DIV
<head> <script language="javascript"> function HideWeekMonth() { $("#tt1& ...
- Arcgis For Android之离线地图实现的几种方式
为什么要用,我想离线地图的好处是不言而喻的,所以很多人做系统的时候都会考虑用离线地图.在此,我给大家介绍几种Arcgis For Android下加载离线地图的方式. 在Arcgis For Andr ...
- Android 进阶15:HandlerThread 使用场景及源码解析
眼睛困得要死,但今天的计划不完成又怎么能睡呢?明日复明日,明日何其多啊! 读完本文你将了解: HandlerThread 简介 HandlerThread 源码 HandlerThread 的使用场景 ...
- Java进阶知识点6:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性
一.背景 容器是Java编程中使用频率很高的组件,但Java默认提供的基本容器(ArrayList,HashMap等)均不是线程安全的.当容器和多线程并发编程相遇时,程序员又该何去何从呢? 通常有两种 ...
- C#操作带名称空间的xml
以前操作xml一般用下面这种方式: 好处是XDocument 能使用linq xmlPath = “path”; XDocument myXDoc = XDocument.Load(xmlPath); ...
- 转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系
原文链接:http://blog.csdn.net/u010271717/article/details/22044415 一.一对多(外键) 例子:一个作者对应多本书,一本书只有一个作者 model ...