2012-04-17 25 views
1

私たちは、protobuf.netを使用してモバイルデバイスとバックエンドサービス間のクラスをシリアライズしていますが、ユーザーの 'コンテキスト'に基づいてクライアントに返される内容を調整する必要があります。protobuf.net&条件付きシリアル化

通常、ISerializableインターフェイスを実装してコンテキスト値を調べて、シリアル化するものを決定します。同様にコンストラクタでは、指定された値を逆シリアル化します。

しかし、ISerializableはprotobuf.net用に実装/サポートされていないようです(理由は分かります)。このため、ShouldSerialize *とOnSerializingというアプローチを取ります。しかし、これは正しいと感じない各クラスにStreamingContextを格納しなければならなくなることを意味します。私たちは潜在的にそれをグローバルに張り付けることができますが、これも正しく感じません。

私たちが望むものを達成するためのよりよい方法がありますか?シリアル化はprotobuf.net形式のみを使用しますが、シリアル化されたものは外部から提供されるコンテキストの影響を受けます。

答えて

0

良い質問です。現在サポートされているパターン(ShouldSerialize *など)は、BCLから完全にそのままの状態で借用されるため、コンテキストはありませんが、コールバックと同じ方法でパラメータをサポートすることはできません。かなり多くの用途(文脈の有無にかかわらず) - 私はここでそれらをサポートしないような良い理由は考えられません。

現在サポートされていないと言われていますが、これが役に立つと知ってもらえますか?

+0

私たちのためには、非常に便利です。私たちはサーバからモバイルデバイスにデータを転送するためにprotobufを使用しています。したがって、すべてのバイト数がカウントされます。従来のISerializableアプローチでは、機能の観点から私たちに必要なものが与えられましたが、protobufを使用していないために得られる追加のサイズは、それを非スターターにします。 – jamie

関連する問題