Я пытаюсь сериализовать и десериализовать ReadOnlyCollection
, используя protobuf-net. Однако исключение выбрасывается при десериализации, когда protobuf-net пытается передать список в ReadOnlyCollection.protobuf-net: Не удалось десериализовать ReadOnlyCollection
var roc = new ReadOnlyCollection<byte>(new byte[] {1, 2, 3});
var ms = new MemoryStream();
Serializer.Serialize(ms, roc);
ms.Position = 0;
var roc2 = Serializer.Deserialize<ReadOnlyCollection<byte>>(ms);
Console.WriteLine(BitConverter.ToString(roc2.ToArray()));
Есть ли способ сохранить это как ReadOnlyCollection
, а не сериализации/десериализации как List
? В фактическом приложении ReadOnlyCollection
является частью неизменяемого объекта, который я хочу сериализовать, и предпочел бы сохранить его как ReadOnlyCollection
.
О, это интригующе. * прямо сейчас * Я бы сказал просто «нет, что не сработает», но я могу придумать несколько способов, которые я мог бы настроить, чтобы * сделать * это сработало. Однако это будет изменение ядра десериализации. Возможно, вы захотите зарегистрировать это как запрос функции на protobuf-net. –
Я добавил [вопрос] (http://code.google.com/p/protobuf-net/issues/detail?id=254) для этого и возможного исправления, но я забыл изменить тип проблемы, чтобы перечисленных как дефект. Doh! – Mark
Я видел. Благодарю. Я доберусь до него, но, пожалуйста, имейте в виду, что protobuf-net - это не моя дневная работа, так что может потребоваться несколько дней, чтобы правильно взглянуть на нее. –