public string Type { get; set; }
public string Foo { get; set; }
public class Derived : Base
public string Bar { get; set; }
Derived obj1 = new Derived
byte[] bytes = MessagePackSerializer.Serialize(obj1);
Console.WriteLine("Serialized bytes:");
var obj2 = MessagePackSerializer.Deserialize<Base>(bytes);
if (obj2 is Derived derived)
Console.WriteLine($"DerivedClass: {derived.Bar}");
Console.WriteLine("Deserialized object is not of type Derived.");