我使用 Azure 主题和订阅作为消息总线。但是当我执行message.GetBody()时,我得到了一个 SerializationException。我想要实现的是让一个订阅者读取所有 BaseEvent 类型的事件,并且每个事件都有自己的订阅者。但是当我试图序列化主体(BaseEvent)时它失败了。那么如何序列化正文以获取 UserEvent 和 TeamEvent 呢?我的代码如下所示:
public abstract class BaseEvent
{
public long ActivityId { get; set; }
}
public class UserEvent
{
public string Name { get; set; }
}
public class TeamEvent
{
public string Name { get; set; }
}
我将它们添加到消息总线中,如下所示:
public async Task HandleAsync(BaseEvent request)
{
var message = new BrokeredMessage(request)
{
CorrelationId = request.Id.ToString()
};
await topicClient.SendAsync(message);
await topicClient.CloseAsync();
}
当我要从公共汽车上阅读时,我会这样做:
BrokeredMessage message;
while ((message = client.Receive(new TimeSpan(0, 0, 5))) != null)
{
models.Add(message.GetBody<BaseEvent>()); // THIS FAILS SerlizationException
message.Complete();
}