Cómo serializar clases heredadas con ProtoBuf-Net

Lo siento si esto es un duplicado. He buscado en varios lugares una respuesta que podría entender, incluyendo:

Las propiedades de la clase base ProtoBuf.net no se incluyen al serializar la clase derivada

Serializar clases heredadas usando protobuf-net

Mis disculpas pero no entendí realmente las respuestas. Estoy buscando un serializador binario más rápido y compacto, y ProtoBuf parece que podría ser la respuesta. Necesito serializar un conjunto de clases que todas derivan de una sola clase base. Hay un gran número de ellos, así que antes de comprometerme a editar el código de clase, realicé una prueba simple. Además, no quiero modificar las clases de ninguna manera que pueda afectar la deserialización de archivos persistentes más antiguos generados con el serializador binario NET.

Esta es la clase base:

[ProtoContract]
    public class BaseClass
    {
        [ProtoMember(1)]
        public string Name
        {
            get; set;
        }
        [ProtoMember(2)]
        public int Age
        {
            get; set;
        }
    }

Esta es la clase derivada:

[ProtoContract]
    public class SubClass1 : BaseClass
    {
        [ProtoMember(3)]
        public string Town
        {
            get; set;
        }

        [ProtoMember(4)]
        public Sex Sex
        {
            get; set;
        }
    }

Este es el código para serializar y deserializar (tomado directamente de la Guía de introducción

var person = new SubClass1 { Age = 25, Name = "Fred", Town = "Denbigh", Sex = Sex.Female };

            using (var file = File.Create(filename))
            {
                Serializer.Serialize(file, person);
            }

y des-serializar

SubClass1 newPerson;
            using (var file = File.OpenRead(filename))
            {
                newPerson = Serializer.Deserialize<SubClass1>(file);
            }

            MessageBox.Show(newPerson.Name + 
                " : " + newPerson.Town + 
                " : " + newPerson.Age.ToString() + 
                " : " + newPerson.Sex);

El resultado es ": Denbigh: 0: Female"

¿De alguna manera los valores de las propiedades de la clase base no están siendo serializados? Originalmente lo probé con los índices ProtoMember para la clase derivada como 1, 2. Pensé que no funcionaría, así que fue para 3, 4. Parece que no hay diferencia. En mi paranoia corrí la misma prueba utilizando el serializador binario NET estándar y obtuve el resultado esperado: "Fred: Denbigh: 25: Female"

¿Qué me estoy perdiendo por favor?