9

我正在尝试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() ) );

有没有办法将其保持为 aReadOnlyCollection而不是序列化/反序列化为List?在实际应用中,ReadOnlyCollection是我想要序列化的不可变对象的一部分,并且希望将其保留为ReadOnlyCollection.

4

1 回答 1

0

我认为 protobuf-net 仅将集合反序列化为 List。你可以:

var roc2aux = Serializer.Deserialize<List<byte>>(ms);
var roc2 = new ReadOnlyCollection<byte>(roc2aux);
Console.WriteLine( BitConverter.ToString( roc2.ToArray() ) );
于 2015-10-17T04:33:34.983 回答