2017-03-27 5 views
1

Ich habe eine Frage bezüglich msgpack Serialisierung in C#. Ich habe eine Basisklasse und eine Klasse von der Basis abgeleitet, von denen jede Halteeigenschaft, zum Beispiel:Wie serialisiert Subtypen mit MsgPack in C#

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

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

Zusätzlich habe ich ein Objekt von einem dritten Klasse Containern, zum Beispiel:

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

Mein Problem ist, wenn ContainerProperty vom Typ DerivedFromBase ist, MsgPack serialisiert nur propertyâ, nicht PropertyB! Wie kann ich erreichen, dass MsgPack ContainerProperty intern als DerivedFromBase erkennt? Muss ich einen eigenen Serializer schreiben oder gibt es einen "eingebauten" Weg?

Vielen Dank.

Antwort

1

das Attribut MessagePackRuntimeType Verwenden MsgPack analysieren den Typ zur Laufzeit für die Serialisierung zu haben:

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

Weitere Einzelheiten der msgpack-cli documentation on polymorphism

+0

Vielen Dank sehen! –

Verwandte Themen