使用非标准构造函数protobuf-net序列化和反序列化对象

本文关键字:反序列化 对象 序列化 protobuf-net 非标准 构造函数 | 更新日期: 2023-09-27 18:29:34

我有一个

  • 没有设置Serializable属性
  • 具有属性,其类型没有设置Serializable属性
  • 我无法控制(意味着我无法编辑课程)

我试着读过THIS,它谈到了在使用Sharpserializer时使用替换类来解决这个问题,但坦率地说,当我不知道对象的属性时,我不知道如何做到这一点。

有没有一些序列化框架可以做到这一点?

编辑:我正在调查protobuf.net不过,我不知道如何在我的场景中发挥作用——我希望马克能过来拯救这一天?:)-我读到这个和我的问题完全一样,但我仍然会"类型不应为,并且无法推断任何合同"使用时

private static byte[] ClienToBytes(IScsClient client)
{
    using (var memoryStream = new MemoryStream())
    {
        RuntimeTypeModel.Default.Add(typeof(IScsClient), true).SetSurrogate(typeof(BinaryFormatterSurrogate<IScsClient>));
        Serializer.Serialize(memoryStream, client);
        return memoryStream.ToArray();
    }
}

我是否使用了RunTimeTypeModel错误?

使用非标准构造函数protobuf-net序列化和反序列化对象

我会尝试protobuf-net。看看这里:http://code.google.com/p/protobuf-net/

网站报价:

协议缓冲区是Google用于大部分数据通信的二进制序列化格式的名称。它被设计为:

  • 小型高效数据存储(远小于xml)
  • 在客户端和服务器上处理成本低廉
  • 平台无关-可在不同编程体系结构之间移植
  • 可扩展-向旧消息添加新数据