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
@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介面。EasyNetQ在發布和訂閱方法中指定了泛型去發布和訂閱。
bus.Publish


※常見的排序演算法總結(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 測試中