9

ReadOnlyCollectionprotobuf-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.

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 に答える