1

我有一个对象

  • 没有 Serializable 属性集
  • 有属性,谁的类型,没有 Serializable 属性集
  • 我无法控制(意味着我无法编辑课程)

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

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

编辑:我正在研究 protobuf.net 我无法弄清楚如何让它在我的场景中工作 - 我希望 Marc 能够挽救这一天?:) - 我读到与我的完全相同的问题,但我仍然得到“类型不是预期的,没有合同可以推断”使用时

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

4

1 回答 1

0

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

来自网站的报价:

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

  • 体积小——高效的数据存储(远小于 xml)
  • 处理成本低 - 在客户端和服务器上
  • 平台无关 - 在不同的编程架构之间可移植
  • 可扩展 - 将新数据添加到旧消息
于 2013-08-30T11:03:22.263 回答