protobuf-net: не удается десериализовать ReadOnlyCollection - PullRequest
9 голосов
/ 24 ноября 2011

Я пытаюсь сериализовать и десериализовать ReadOnlyCollection с использованием protobuf-net. Однако при десериализации возникает исключение, когда protobuf-net пытается преобразовать List в коллекцию 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.

.

1 Ответ

0 голосов
/ 17 октября 2015

Я думаю, что protobuf-net десериализует только коллекции как List. Вы могли бы:

var roc2aux = Serializer.Deserialize<List<byte>>(ms);
var roc2 = new ReadOnlyCollection<byte>(roc2aux);
Console.WriteLine( BitConverter.ToString( roc2.ToArray() ) );
...