c# - protobuf-net:无法反序列化 ReadOnlyCollection

标签 c# protobuf-net readonly-collection

我正在尝试使用 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 仅将集合反序列化为列表。 你可以:

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/

相关文章:

protobuf-net - 列表的 Protobuf.net 对象图序列化

node.js - 解码后的时间戳与原始日期时间值不同

c# - 在不实现 IXmlSerializable 的情况下序列化只读集合

c# - .Net 中的 ReadOnlyCollection<T> 和 ReadOnlyCollectionBuilder<T> 有什么区别?

c# - 在我自己的登录表单中使用 Windows 身份验证

c# - 如果在等待异步调用后设置 UWP bool 值,则不会在 UI 中更新

c# - Protobuf-net 不序列化泛型类型继承自泛型类型

c# - ArrayList 到 MessageBox C#

c# - ASP.net 日历控件的任何免费替代品?

java - List.of() — 为什么要提供无法添加/删除/编辑的空元素列表?