gpt4 book ai didi

c# - 在 Protobuf-net 中,是否可以序列化非装饰类?

转载 作者:太空狗 更新时间:2023-10-29 23:34:12 24 4
gpt4 key购买 nike

要使用 protobuf-net 序列化一个类,您需要提供类和属性属性 [ProtoContract] 和 [ProtoMember(n)] -- 其中 n 是 1,2,3,..,etc

除了克隆到一个类的镜像之外,是否可以序列化/反序列化一个我们无法控制的类?

例如:

使用 ProtoBuf;

  • Serializer.Serialize (OutputStream, 异常);

  • Serializer.Serialize >(OutputStream, dataWithPossibleException);

注意。说数据有 [ProtoContract]/[ProtoMember] 而其他人没有。

可能的方法:

  • 如果我们有像扩展方法一样工作的“扩展属性”就好了。 [不可能]
  • 在本地复制类,然后在序列化/反序列化之前复制到对象/从对象复制[这可行,但生产力下降]
  • 为类生成一个外部原型(prototype)文件/定义并将其存储在资源中? [有人知道怎么做吗?]

最佳答案

这里有 v2 中的选项:

  • 您可以配置一个 RuntimeTypeModel,告诉它有关类型和成员的信息,而无需任何属性
  • 对于笨拙的类型,可以提供代理项以使序列化更容易(它必须具有与原始类型之间的转换运算符)
  • 对于类型不是静态类型的 API,可以选择包含类型元数据

现在,我认为其中一些内容解决了您的一些观点。如果您可以完全指定一个有问题的场景,我可能会更具体(或者想出新的方法来折磨代码以使其工作)。

但要回答标题问题(非装饰):是的,在v2中

关于c# - 在 Protobuf-net 中,是否可以序列化非装饰类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com