當前位置:
首頁 > 知識 > EasyNetQ之多態發布和訂閱

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("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(cat);
bus.Publish(dog);

注意:必須顯示的指定發布了IAnimal介面。EasyNetQ在發布和訂閱方法中指定了泛型去發布和訂閱。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

常見的排序演算法總結(JavaScript)
如何用webpack實現自動化的前端構建工作流
Vulkan Tutorial 26 view and sampler

TAG:科技優家 |

您可能感興趣

RocketMQ學習-消息發布和訂閱
python 實現redis訂閱發布功能
基於訂閱的VR平台Terra Virtua將於今年9月發布
育碧或在今年E3公布「Ubisoft Pass」遊戲訂閱服務
Valve推出《Dota 2》付費訂閱服務「Dota Plus」
NVIDIA重啟主機SHIELD訂閱服務 GeForceNow將可獲取Steam遊戲
Apple News+訂閱服務推出
The Verge再爆猛料稱微軟將推出Xbox All Access整合付費訂閱服務
Apple Music在美訂閱用戶數超過Spotify
索尼PlayStation Now訂閱服務用戶已經超過70萬
學習的結果?Google Play或推出付費訂閱服務
Apple Music在美訂閱用戶數量已超Spotify
微軟宣布將會擴展旗下的訂閱服務Xbox Game Pass
Google Stadia 將讓發行商在其上提供自己的遊戲訂閱服務
美團計劃推出類似 Amazon Prime 的訂閱服務
微軟向Office 365訂戶贈送Adobe CC Photography三個月訂閱
超划算的終極訂閱服務!微軟正式公布Xbox All Access
Take-Two CEO公開質疑Xbox遊戲通行證及EA Access等遊戲付費訂閱模式
Apple News+對手來了!Mozilla免廣告訂閱服務
Google 也加入應用訂閱服務戰場,Play Pass 測試中