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

时间:2013-08-30 10:52:08

标签: c# serialization deserialization protobuf-net

我有一个

的对象
  • 没有Seri​​alizable属性集
  • 属性,类型,没有Seri​​alizable属性集
  • 我无法控制(意味着我无法编辑课程)

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

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

编辑:我正在研究protobuf.net 我无法弄清楚如何让它在我的场景中发挥作用 - 我希望Marc能够挽救这一天吗? :) - 我读了this这与我的问题完全相同,但我还是得到了 “预计不会输入类型,也不能推断合同” 使用时

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错误吗?

1 个答案:

答案 0 :(得分:0)

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

网站引用:

  

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

     
      
  • 体积小 - 高效的数据存储(远小于xml)
  •   
  • 便宜处理 - 无论是在客户端还是服务器
  •   
  • 平台独立 - 可在不同编程架构之间移植
  •   
  • 可扩展 - 向旧消息添加新数据
  •