protobuf-net Сериализовать в строку и сохранить в базе данных, а затем де сериализовать

Я хотел бы сериализовать / десериализовать объект, используя строку. Просто обратите внимание, когда я сериализую / де-сериализую в файл, все работает нормально. Я пытаюсь получить строку, чтобы сохранить ее в базе данных, а затем вытащить ее позже для десериализации.

Вот работающий код:

MemoryStream msTest = new MemoryStream();
Serializer.Serialize(msTest, registrationBlocks);
msTest.Position = 0;
List<RVRegistrationBlock> CopiedBlocks = new List<RVRegistrationBlock>();
CopiedBlocks = Serializer.Deserialize<List<RVRegistrationBlock>>(msTest);

Объект «CopiedBlocks» такой же список, который был в "registrationBlocks". Отлично работает, все сериализовано / де-сериализовано. Здесь я храню все в потоках.

Вот код, который не работает, когда я пытаюсь задействовать строку:

MemoryStream msTestString = new MemoryStream();
Serializer.Serialize(msTestString, registrationBlocks);


msTestString.Position = 0;
StreamReader srRegBlock = new StreamReader(msTestString);

byte[] bytedata64 = System.Text.Encoding.Default.GetBytes(srRegBlock.ReadToEnd());

string stringBase64 = Convert.ToBase64String(bytedata64);

byte[] byteAfter64 = Convert.FromBase64String(stringBase64);
MemoryStream afterStream = new MemoryStream(byteAfter64);


List<RVRegistrationBlock> CopiedBlocksString = new List<RVRegistrationBlock>();
CopiedBlocksString = Serializer.Deserialize<List<RVRegistrationBlock>>(afterStream);

В последней строке, когда идет десериализация, я получаю исключение: Exception of Тип "ProtoBuf.ProtoException" был брошен. Я не могу углубиться в это, внутреннее исключение равно нулю. Я не могу понять, почему он это делает.

Я определенно сузил круг вопросов до того факта, что, когда я ввязываю струну, она выходит из строя. Я храню строку в базе данных в nvarchar (max), поэтому мне нужна строка.

Любая помощь будет очень признательна!

19
задан Robert 1 August 2011 в 23:18
поделиться