我正在尝试使用protobuf-net序列化和反序列化ReadOnlyCollection。但是,当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是我要序列化的不可变对象(immutable对象)的一部分,并且希望将其保留为ReadOnlyCollection

最佳答案

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

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

关于c# - protobuf-net:无法反序列化ReadOnlyCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8250734/

10-13 07:37