Protobuf-сеть, создающая typemodel с интерфейсом и абстрактным базовым классом

Я пытаюсь сериализовать модель, используя отличный Protobuf-NET. Я не могу использовать атрибуты (объекты неизвестны во время компиляции), поэтому я создал TypeModel. Моя объектная модель состоит из классаTestDataObjectэтот класс имеет свойствоITestDataExtension, Абстрактный базовый классTestDataExtensionBase реализует этот интерфейс и классTestDataExtension (myDataObjectExtA в коде) наследуется от этого базового класса.

Моя TypeModel построена так:

        System.IO.MemoryStream tmpMemoryStream = new System.IO.MemoryStream();
        RuntimeTypeModel model = TypeModel.Create();
        MetaType basetype = model.Add(typeof(TestDataObject), true);
        MetaType interfaceType = model.Add(typeof(ITestDataExtension), true);
        //MetaType extBaseType = interfaceType.AddSubType(100, typeof(TestDataExtensionBase));
        MetaType extType = interfaceType.AddSubType(200, myDataObjectExtA.GetType());
        model.Add(typeof(TestDataExtensionBase), true);
        model.Add(myDataObjectA.Ext.GetType(), true);
        model.CompileInPlace();
        model.Serialize(tmpMemoryStream, myDataObjectA);
        byte[] tmpDat = tmpMemoryStream.ToArray();

Если я запускаю следующее, свойства базового класса не сериализуются, и мне нужно, чтобы они были сериализованы.
По моему мнению, я должен был добавить подтип для TestDataExtensionBase следующим образом:

        MetaType extBaseType = interfaceType.AddSubType(100, typeof(TestDataExtensionBase));
        MetaType extType = extBaseType.AddSubType(200, myDataObjectExtA.GetType());

Но это приводит к: Неожиданному подтипу: TestDataExtension. Кто-нибудь знает, что я делаю не так? Любая помощь будет оценена.

Ответы на вопрос(1)

Ваш ответ на вопрос