2017-03-27 125 views
1

我有一个关于msgpack在c#中的序列化的问题。 我有一个基类和从碱衍生的一类,它们中的每保持性能,例如:如何在C#中使用MsgPack序列化子类型

class Base 
{ 
    int PropertyA { get; set; } 
} 

class DerivedFromBase : Base 
{ 
    int PropertyB { get; set; } 
} 

另外我具有第三类容器的目的,例如:

class Container 
{ 
    Base ContainerProperty { get; set; } 
} 

我的问题是,如果ContainerProperty的类型是DerivedFromBase,则MsgPack仅序列化PropertyA,而不是PropertyB!我怎样才能实现,MsgPack内部承认ContainerProperty是一个DerivedFromBase?我是否必须编写自定义序列化程序或者是否有“内置”方法?

谢谢。

回答

1

使用属性MessagePackRuntimeType有MsgPack分析的类型在运行时序列化:

class Container 
{ 
    [MessagePackRuntimeType] 
    Base ContainerProperty { get; set; } 
} 

有关详细信息,请参阅msgpack-cli documentation on polymorphism

+0

非常感谢您! –