API практически не изменился с момента ответа Марка.
Кажется, больше нет метода SerializeItems.
Вот еще немного актуальной информации, которая должна помочь:
ProtoBuf.Serializer.Serialize(stream, items);
может принимать IEnumerable, как показано выше, и он выполняет свою работу, когда дело доходит до сериализации.
Однако есть метод DeserializeItems (...), а дьявол кроется в деталях:)
Если вы сериализуете IEnumerable, как описано выше, вам нужно вызвать DeserializeItems, передавая PrefixStyle.Base128 и 1, так как fieldNumber вызывает по умолчанию эти значения по умолчанию.
Вот пример:
ProtoBuf.Serializer.DeserializeItems<T>(stream, ProtoBuf.PrefixStyle.Base128, 1));
Также, как отметили Марк и Вик, вы можете сериализовать / десериализовать для каждого элемента, например, так (используя пользовательские значения для PrefixStyle и fieldNumber):
ProtoBuf.Serializer.SerializeWithLengthPrefix(stream, item, ProtoBuf.PrefixStyle.Base128, fieldNumber: 1);
и
T item;
while ((item = ProtoBuf.Serializer.DeserializeWithLengthPrefix<T>(stream, ProtoBuf.PrefixStyle.Base128, fieldNumber: 1)) != null)
{
// do stuff here
}