我不认为这是重复的。我已经阅读了一些内容,但没有找到与此相同的内容。似乎字段可以在二进制格式化程序和 protobuf 中序列化,但不能在 XML 中序列化。我不知道JSON。
我正在考虑用 protobuf-net 替换标准的 .NET 二进制序列化程序。原因是为了提高速度并获得更小的持久文件大小。
在 NET Binary 中,我只是将这些类标记为可序列化并保留它。我怀疑不好。
使用 protobuf-net,我需要使用 [ProtoMember()] 属性指定要序列化的内容。我的新手测试表明,如果标记为自动属性,则私有字段会被序列化。
我根本不想更改类代码定义,因为我仍然需要能够反序列化由 NET 序列化程序创建的旧持久数据。我混合了:
- 在类中使用的私有字段
- 其值在构造函数中设置的私有字段
- 作为非自动属性的支持字段的私有字段
- 具有上述支持字段的属性
- 自动属性
- 没有设置器的属性返回一些内部确定的计算或值
可能还有其他一些。换句话说,几乎所有类型的字段和属性。
我想我需要保留任何表示从文件反序列化后无法构造的对象状态的值。
我想保留每个字段和属性不会有什么害处,但这只会使工作变慢并且文件比它需要的大。
我想我可以忽略只在类内部使用而不是从外部设置的私有字段。我想我应该坚持那些在构造函数中设置的字段。我不确定支持字段 - 保留它们还是保留它们的公共财产更好?我必须坚持自动属性我不能坚持没有设置器的属性,所以我需要坚持在他们的计算中使用的任何字段/属性。
我是在正确的轨道上还是错过了重点。
提前致谢。