A List<object>
создает ряд проблем для формата сериализации, который не включает метаданные типа ... но, как всегда, есть хитрости, ловушки и обходные пути.
Если вы имеете в виду на самом внешнем уровне , здесь есть несколько вариантов, которые вращаются вокруг использования другого тега (/ field-number) для обозначения типа сообщения. Это полезно в API (например, при использовании диалога сокетов), где в любое время могут ожидаться разные сообщения. В качестве примера можно привести: Как я могу отправить несколько типов объектов через Protobuf?
Внутри сообщения несколько сложнее; если список типов-кандидатов небольшой, то разумный обходной путь выглядит примерно так: Атрибуты Protobuf с иерархией общих классов , т. е. обработка каждого ожидаемого типа как специализации.
Если тип не может быть предсказан, тогда v2 включает другой обходной путь, но включает больше метаданных, чем обычно; см http://marcgravell.blogspot.com/2011/03/objects-graphs-and-all-that-jazz.html