Учтите, у меня есть очень большая коллекция (миллионы) объектов, сериализованных в соответствии с форматом прото-проводов Возможно ли передать эти элементы из файла? Я попытался сериализовать объекты как List<T>
, а затем десериализовать один элемент T
, но в итоге он прочитал только последний элемент из потока. Я также пытался сериализовать каждый экземпляр индивидуально в поток с тем же эффектом, что и при десериализации, при этом он считывал только последний элемент.
Я подозреваю, что решение требует, чтобы я знал размер каждого сериализованного элемента и затем читал этот размер из потока и передачи этого диапазона байтов в сериализатор protobuf для десериализации. Я хотел убедиться, что не было более простого механизма, который не требует знания длины каждого отдельного элемента, который может отличаться для каждого экземпляра объекта, для выполнения sh этой задачи.
Еще одна мысль, которую я имел, включала размер каждого предстоящего объекта в качестве его собственного объекта в потоке, например:
0: мета-информация для первого объекта, включая тип / длину в байтах 1: объект определено в 0 2: метаинформация для второго объекта, включая тип / длину в байтах 3: объект определен в 2 4: ... et c
Информация о версии: в настоящее время я использую do tnet ядро 3.1 и protobuf- net версия 2.4.4