问题描述
|
要使用protobuf-net序列化一个类,您需要提供类和属性属性[ProtoContract]和[ProtoMember(n)]-其中n是1,2,3,.. etc
Appart从克隆到类的镜像,是否可以序列化/反序列化我们无法控制的类?
例如:
使用ProtoBuf;
Serializer.Serialize (OutputStream,异常);
要么
Serializer.Serialize <元组<数据,异常>>(OutputStream,dataWithPossibleException);
注意说数据具有[ProtoContract] / [ProtoMember],而其他则没有。
可能的方法:
如果我们拥有像扩展方法一样的“扩展属性”,那就太好了。 [不可能]
在本地复制该类,然后在序列化/反序列化之前将其复制到对象中,或从对象复制到对象中(这虽然可行,但生产率下降)
生成该类的外部原型文件/定义并将其存储在资源中? [有人知道该怎么做吗?]
解决方法
v2中有以下选项:
您可以配置一个RuntimeTypeModel告诉它有关类型和成员的信息,而无需任何属性
对于尴尬的类型,可以提供代理以简化序列化(它必须具有到原始类型的转换操作符/从原始类型的转换操作符)
对于类型不是静态类型的API,可以选择包含类型元数据
现在,我认为其中一些可以解决您的一些观点。如果您可以完全指定一个有问题的方案,那么我也许可以更加具体(或者想出一种折磨代码以使其正常工作的新方法)。
但是要回答标题问题(未装饰):是的,在v2中