ProtoContract
屬性 - AsReferenceDefault
和ProtoMemberAttribute
屬性AsReference
有什麼區別?Protbuf-net:ProtoMemberAttribute.AsReference和ProtoContract.AsReferenceDefault之間的區別是什麼
按照wiki:
AsReference
- 使子對象的參考跟蹤;這使用了一個非常不同的序列化佈局,但是隻會對該對象進行一次序列化(爲其提供唯一的引用標記)。這允許 全圖支持否則循環圖。這也可以用來 有很大的影響,以有效地存儲公用字符串以其他方式 數據
重複很多次,但它是如何涉及到ProtoContract
屬性:AsReferenceDefault
?
例如,如果將AsReferenceDefault
設置爲true,是不是意味着ProtoMemberAttribute
屬性AsReference
不再需要?
是的,我以這種方式思考,但在我們的代碼中,有很多循環引用,所以'AsReferenceDefault'應該處理它,但不幸的是,它沒有,但添加了'AsReference'後它起作用(例如AsReference是'列表'設置爲'true',但MyEntity'已經擁有它)。所以看起來像有一些差異,我不知道什麼 –
GSerjo
沒有,名單不會'AsReferenceDefault',即使'MyEntity'是'AsReferenceDefault',如果你有一個類'MyEntityList:List ',你可以標記'MyEntityList' as'AsReferenceDefault' –
是的,但它確實沒有在屬性列表上添加'AsReference = true''我有一個異常(檢測到遞歸)。目前,我有'StackOverflow異常'和每調用堆棧protobuf試圖序列化相同的對象(數據有周期引用),但同時'AsReferenceDefault = true'。我對AsReference行爲有點好奇,這有點意外 –
GSerjo