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

sgt*_*gtz 5 c# protobuf-net

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

从克隆到类的镜像,是否可以序列化/反序列化我们无法控制的类?

例如:

使用ProtoBuf;

  • Serializer.Serialize <Exception>(OutputStream,exception);

要么

  • Serializer.Serialize <Tuple <Data,Exception >>(OutputStream,dataWithPossibleException);

NB.说Data有[ProtoContract]/[ProtoMember]而其他人没有.

可能的方法:

  • 如果我们有"扩展属性"就像扩展方法一样,那就太好了.[不可能]
  • 在本地复制类,然后在序列化/反序列化之前复制到对象或从对象复制[这将起作用,但生产率下降]
  • 为类生成外部proto文件/定义并将其存储在资源中?[有谁知道如何去做这个?]

Mar*_*ell 3

这里有 v2 的选项:

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

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

但回答标题问题(未修饰):是的,在 v2 中