簡體   English   中英

是否可以將Protobuf-Net與沒有無參數構造函數的類一起使用?

[英]Is it possible to use Protobuf-Net with a class without a parameterless constructor?

使用Protobuf-Net,我發現如果沒有無參數構造函數或者我可能會遺漏某些東西,似乎不可能反序列化一個類?

我不想要一些帶有無參數構造函數的類。 我可以使用某種屬性或其他技術嗎?

protobuf-net目前依賴於無參數構造函數。

但是,該構造函數不需要是公共的( 如果需要調用它將使用反射 ),因此您可以定義所需的私有構造函數,僅供protobuf-net使用(添加注釋以解釋原因)並處理特定的序列化相關問題。

這使得api的其余部分無法構建“非法”實例。

Marc指出,如果您正在談論最外層的消息對象,您也可以自己創建對象並調用Serializer.Merge。 但是如果它需要創建一個對象(因為它當前有一個null實例,或者列表/數組中的新項),那么它會查找一個默認的構造函數。

ShuggyCoUk使用無參數構造函數是正確的。

但是為了完整性 - 如果你在談論最外面的消息對象,你也可以自己創建對象並調用Serializer.Merge 但是如果它需要創建一個對象(因為它當前有一個null實例,或者列表/數組中的新項),那么它會查找一個默認的構造函數。

我也可以在屬性中提供一些標記來說“只需通過FormatterServices創建一個原始對象”,但這感覺不必要(與私有無參數構造函數相比),並且可能不適用於所有平台(Silverlight,CF等) - 可能是問題)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM