2014-09-05 48 views
0

我们使用内置XML序列化程序的NSB4。一段时间以来,我们一直在发送以下类型的消息NServiceBus XmlSerializer可以使用抽象类型吗?

public interface IReply 
{ 
    List<Quote> Quotes { get; set; } 
} 

最近,我们有必要与不同类型的报价,所有这些都继承一个抽象类,QuoteBase工作,以使答复现在看起来像此

public interface IReply 
{ 
    List<QuoteBase> Quotes { get; set; } 
} 

在运行时,List中的引号是CarQuote或VanQuote。但是,我们发现XML序列化程序不适用于抽象类型的列表。我们得到一个类型为MemberAccessException的异常,并带有“无法创建抽象类”的消息。有没有人知道有什么办法呢?

+0

你得到了什么错误信息,它在发送/发布或接收端?另外,消息的接收者是否知道正在放入列表中的派生类型? – 2014-09-05 15:57:14

+0

@菲尔已经修改了这个问题,并详细说明了错误。接收者确实知道派生类型。 – gilles27 2014-09-05 16:07:12

+0

看到我的意见,您的其他问题(http://stackoverflow.com/questions/25689768/is-it-possible-to-get-at-the-current-incoming-nservicebus-message) – 2014-09-07 14:30:09

回答

0

我找不到一种方法来使这个抽象类工作,但它确实与接口(例如IQuote)一起工作。

+0

是的,它可以与一个接口,但它只是序列化在该接口上定义的属性,这在我们的特定场景中是一个问题,因为汽车和面包车的特定属性将被省略。 – gilles27 2014-09-05 18:17:47

+0

这是一个答案。 “有没有解决的办法?” “是的,使用接口而不是抽象类。”它可能是也可能不是正确的答案,但它是一个答案。 – 2016-01-22 14:15:20

相关问题