2012-04-17 63 views
1

我們使用protobuf.net來序列化移動設備和後端服務之間的類,但是現在我們需要根據用戶的「上下文」來調整發送給客戶端的內容。protobuf.net&conditional serialization

我們通常會通過實現ISerializable接口並查看上下文值來決定要序列化的內容。同樣在構造函數中,我們將反序列化提供的值。

但是看起來ISerializable沒有實現/支持(我明白爲什麼)protobuf.net,所以我們通過採用'ShouldSerialize *'和'OnSerializing'方法來解決這個問題。然而,這並不意味着我們最終不得不將StreamingContext存儲在每個不合適的類中。我們可以將其放在全球範圍內,但這也不對。

有沒有更好的方法來實現我們想要的,例如序列化只使用protobuf.net格式,但序列化是受外部提供的上下文影響?

回答

0

這是一個很好的問題。目前支持的模式(ShouldSerialize *等)完全是從BCL中借用的,因此沒有上下文 - 但是沒有理由它不能像回調一樣支持參數 - 事實上,它支持的回調幾乎任何用法(有/沒有上下文等) - 所以我想不出一個好的理由不支持他們在這裏。

你說的不是當前支持,但它可能是 - 讓我知道這將是有益的。

+0

對我們來說這將是非常有用的。我們使用protobuf將數據從服務器傳輸到移動設備,因此每個字節都很重要。傳統的ISerializable方法爲我們提供了我們從功能角度想要的東西,但是由於我們沒有使用protobuf使得它不是首發,所以我們獲得了額外的大小。 – jamie 2012-04-20 13:24:07