2
遵循此解釋最簡單的方法是NServiceBus Pub/Sub示例,其中包含「多態訂閱」(Subscriber2)的示例。NServiceBus中的多態訂閱僅適用於接口?
消息:(不改變)
public class EventMessage : IEvent
{
public Guid EventId { get; set; }
public DateTime? Time { get; set; }
public TimeSpan Duration { get; set; }
}
public interface IEvent : IMessage
{
Guid EventId { get; set; }
DateTime? Time { get; set; }
TimeSpan Duration { get; set; }
}
處理程序:(不改變)
public class EventMessageHandler : IHandleMessages<IEvent>
{
public void Handle(IEvent message)
{
// ...
}
}
此處理程序將收到兩個IEvent
和EventMessage
消息。但是,如果我會讓IEvent一類...
public class IEvent : IMessage
{
Guid EventId { get; set; }
DateTime? Time { get; set; }
TimeSpan Duration { get; set; }
}
...然後我將無法接收EventMessage
但會收到IEvent
像以前
所以,我發現了這樣簡單的規則:如果你在IHandleMessages中使用接口> - 它會工作,如果類 - 它不會工作。目前我有所有的消息作爲類,我想訂閱父類的消息,以接收所有的孩子類消息。
它是否打算行爲?