ProtoContract
属性 - AsReferenceDefault
和ProtoMemberAttribute
属性AsReference
之间有什么区别。
根据wiki:
AsReference
- 启用子对象的引用跟踪;这用了 一个非常不同的序列化布局,但只会序列化 对象一次(给它一个唯一的引用令牌)。这允许 对其他循环图的全图支持。这也可以使用 效果很好,有效地存储其他常见的字符串 在数据中多次重复
但它与ProtoContract
属性的关系如何:AsReferenceDefault
?
例如,如果将AsReferenceDefault
设置为true,是否意味着不再需要ProtoMemberAttribute
属性AsReference
?
答案 0 :(得分:2)
是的,如果AsReferenceDefault
应用于类,即使相应的属性未在AsReference
上声明ProtoMemberAttribute
,它也会始终序列化为参考。
理想情况下,对于您的大班级,您确定该对象很大,最好将其序列化一次作为参考,因此您可以将其标记为AsReferenceDefault
。
AsReference
旨在处理引用序列化,即使它不是您自己的类,例如String
。