これは重複していないと思います。いくつか読んだことがありますが、これと同じものは見つかりませんでした。フィールドは、バイナリ フォーマッタと protobuf ではシリアル化できますが、XML ではシリアル化できないようです。JSONについてはわかりません。
標準の .NET バイナリ シリアライザーを protobuf-net に置き換えることを検討しています。その理由は、速度を向上させ、保持されるファイルのサイズを小さくするためです。
NET Binary では、クラスをシリアル化可能としてマークし、そのままにしました。良くないと思います。
protobuf-net では、[ProtoMember()] 属性で何をシリアル化するかを指定する必要があります。私の初心者テストでは、自動プロパティと同様にマークされている場合、プライベートフィールドがシリアル化されることが示されています。
NET シリアライザーによって作成された古い永続データを逆シリアル化する必要があるため、クラス コードの定義をまったく変更したくありません。私は以下の混合物を持っています:
- クラス内で使用されるプライベート フィールド
- 値がコンストラクターで設定されるプライベート フィールド
- 非自動プロパティのバッキング フィールドであるプライベート フィールド
- 上記のバッキング フィールドを持つプロパティ
- 自動プロパティ
- 内部で決定された計算または値を返すセッターのないプロパティ
そしておそらく他のいくつか。つまり、ほぼすべてのタイプのフィールドとプロパティです。
ファイルからの逆シリアル化後に構築できないオブジェクトの状態を表す値を永続化する必要があると思います。
すべてのフィールドとプロパティを永続化しても害はないと思いますが、それではジョブが遅くなり、必要以上にファイルが大きくなります。
クラス内でのみ使用され、外部から設定されないプライベート フィールドは無視できると思います。コンストラクターで設定されたフィールドを永続化する必要があると思います。バッキングフィールドについてよくわかりません-それらまたはそれらのパブリックプロパティを永続化する方が良いですか? 自動プロパティを永続化する必要があります セッターなしでプロパティを永続化できないため、計算で使用されるフィールド/プロパティを永続化する必要があります。
私は正しい軌道に乗っていますか、それともポイントを逃していますか。
前もって感謝します。