我认为这不是重复问题。我已经阅读了一些内容,但没有找到与此相同的内容。似乎字段可以在二进制格式和protobuf中进行序列化,但不能在XML中进行序列化。我不知道JSON。
我正在考虑使用protobuf-net替换标准的.NET二进制序列化器。原因是提高速度并获得更小的持久化文件大小。
在.NET二进制中,我只需将类标记为可序列化,然后就完成了。我认为这样做不好。
对于protobuf-net,我需要使用[ProtoMember()]属性指定要序列化的内容。我的新手测试显示,如果标记为自动属性,则会序列化私有字段。
我不想改变类代码定义,因为我仍然需要能够反序列化由NET序列化器创建的旧持久化数据。我混合了以下内容:
1.在类内部使用的私有字段 2.在构造函数中设置值的私有字段 3.用于非自动属性的后备字段的私有字段 4.具有上述后备字段的属性 5.自动属性 6.没有设置器的属性,返回一些计算或内部确定的值
还有可能有其他类型的字段和属性。
我想我需要持久化表示对象状态的任何值,在从文件反序列化后无法构造该值。
我想,持久化每个字段和属性都没有坏处,但这只会使工作变慢,文件比必要的大。
我认为可以忽略仅在类内部使用且不从外部设置的私有字段。我认为应该持久化在构造函数中设置的那些字段。我不确定后备字段-更好地持久化它们还是公共属性?我必须持久化自动属性。我无法持久化没有设置器的属性,因此需要持久化用于计算它们的任何字段/属性。
我是正确的还是错过了重点?
提前感谢您。
我正在考虑使用protobuf-net替换标准的.NET二进制序列化器。原因是提高速度并获得更小的持久化文件大小。
在.NET二进制中,我只需将类标记为可序列化,然后就完成了。我认为这样做不好。
对于protobuf-net,我需要使用[ProtoMember()]属性指定要序列化的内容。我的新手测试显示,如果标记为自动属性,则会序列化私有字段。
我不想改变类代码定义,因为我仍然需要能够反序列化由NET序列化器创建的旧持久化数据。我混合了以下内容:
1.在类内部使用的私有字段 2.在构造函数中设置值的私有字段 3.用于非自动属性的后备字段的私有字段 4.具有上述后备字段的属性 5.自动属性 6.没有设置器的属性,返回一些计算或内部确定的值
还有可能有其他类型的字段和属性。
我想我需要持久化表示对象状态的任何值,在从文件反序列化后无法构造该值。
我想,持久化每个字段和属性都没有坏处,但这只会使工作变慢,文件比必要的大。
我认为可以忽略仅在类内部使用且不从外部设置的私有字段。我认为应该持久化在构造函数中设置的那些字段。我不确定后备字段-更好地持久化它们还是公共属性?我必须持久化自动属性。我无法持久化没有设置器的属性,因此需要持久化用于计算它们的任何字段/属性。
我是正确的还是错过了重点?
提前感谢您。
protobug-net
- 这是一个故意的错别字吗? - H H