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

让我们看下一个示例。我有一个接口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之多态发布和订阅的更多相关文章

  1. EasyNetQ之多态发布和订阅

    你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name ...

  2. 【EasyNetQ】- 多态发布和订阅

    您可以订阅接口,然后发布该接口的实现. 我们来看一个例子.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name { get ...

  3. EasyNetQ使用(六)【多态发布和订阅,消息版本控制】

    你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name ...

  4. redis 笔记06 发布与订阅、事务、慢查询日志、监视器

    发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系:SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面,而UNSUBSCRIBE命令则负责 解除客 ...

  5. SQL SERVER发布与订阅 [原创]

    一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...

  6. 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

    本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...

  7. Zookeeper实现数据的发布和订阅

    使用场景        当一个对象的改变,需要通知其他对象而且不知道要通知多少个对象,可以使用发布订阅模式 .在分布式中的应用有配置管理(Configuration Management) .集群管理 ...

  8. 8,EasyNetQ-多态发布和订阅

    您可以订阅一个接口,然后发布该接口的实现. 我们来看一个例子. 我有一个接口IAnimal和两个实现猫和狗: public interface IAnimal { string Name { get; ...

  9. SQL SERVER发布与订阅

    一.配置分发 1.配置分发服务器,注:配置发布与订阅,连接SQLSERVER必须用服务器名登录 2.配置分发 3.选择分发服务器 4.选择快照文件夹 5.设置此文件夹的读写权限为everyone 6. ...

随机推荐

  1. react: typescript-webpack项目基本配置

    1.webpack.config.js basic const webpack = require('webpack'); const autoprefixer = require('autopref ...

  2. AS3中以post和get方式提交数据

    这里主要介绍在as3中用URLRequest对像来post或get数据到服务器. post用于大数据量的提交,get用于小数据量的提交. as3中提交数据: POST方式: 1.新建一个test.fl ...

  3. ajax函数里不能用this调用

    ajax函数里不能用this调用,想用的话,在ajax外面弄个变量var mythis = $(this),然后在里面用就行了 因为,在ajax方法里写$(this)指向的是最近调用它的jquery对 ...

  4. (四)canvas绘制路径

    save() 样式不受污染的起始范围 shadowOffsetX 阴影x轴的距离 shadowOffsetY 阴影y轴的距离 shadowBlur 模糊度 shadowColor 阴影颜色 resto ...

  5. 用ofstream/ifstream 读写Unicod的TXT

    使用的平台:vs2013 控制台 from: http://bbs.csdn.net/topics/360229403 xiayuanzhong: ofstream ofs( "test.t ...

  6. Android UI之LinearLayout详解

    ※※※摘自http://www.cnblogs.com/salam/archive/2010/10/20/1856793.html LinearLayout是线性布局控件,它包含的子控件将以横向或竖向 ...

  7. HDU - 6314:Matrix (广义容斥)(占位)

    Samwell Tarly is learning to draw a magical matrix to protect himself from the White Walkers. the ma ...

  8. NETCore中RabbitMQ的使用

    NET中RabbitMQ的使用 https://www.cnblogs.com/xibei666/p/5931267.html 概述 MQ全称为Message Queue, 消息队列(MQ)是一种应用 ...

  9. gitlab Failed to register this runner. Perhaps you are having network problems runner 注册失败问题解决

    1. 低版本安装地址 https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v1.11.2/index.html   2. 使用 yum ...

  10. 微软发布WCF教程及大量示例

    继前面 微软公司发布Windows Communication Foundation (WCF)和Windows CardSpace的示例程序之后,微软今天又发布了WF的教程和大量示例,对于学习WF的 ...