Я пытаюсь использовать ProtoBuf-Net для создания независимого от типа сериализатора, который сериализует экземпляры ранее неизвестных типов.
Для этого я использую ProtoBuf.Meta.RuntimeTypeModel, динамически добавляя типы объектов, предоставленных моему универсальному сериализатору.
При добавлении типа я рекурсивно добавляю полную иерархию типов с помощью отражения: я добавляю типы, вызывая myTypeModel.Add (type, true) и myBaseTypeMetaType.AddSubType (subTypeIndex, type)
Это работает нормально, за исключением случаев, когда я уже использовал сериализатор для сериализации типа, а затем попытался добавить подтип к этому типу. Затем я получил InvalidOperationException: «Тип не может быть изменен после создания сериализатора для Serialization.Test.Address»
Я попытался установить для свойства auto-compile модели значение false, но это не решило мою проблему.
Мое понимание проблемы состоит в том, что по умолчанию protobuf-net создает сериализатор для типа всякий раз, когда он должен сериализовать тип, и после этого ProtoBuf.Meta.MetaType не может быть изменен.
Это правильно?
Я что-то не так делаю?
Есть ли другой способ достичь моих целей?
Спасибо за вашу помощь.
Louis