オブジェクトを同期するために、バス経由で protobuf-net を使用しています。コレクション内のオブジェクトに対しては正常に機能しています。イベントをリッスンするCollectionChanged
と、完全なオブジェクトが同期され、バス上の専用チャネルに配信されます。オブジェクトにはリスト (辞書) が含まれており、完全にシリアライズ/デシリアライズされています。
今まではそれは問題ではありませんでしたが、より効率的になり、これらのリストの更新のみを送信したいと考えています。設定OverwriteList = false
してメソッドを使用しようとするとModel.DeserializeWithLengthPrefix
、次のエラー メッセージが表示されます。
「同じキーのアイテムが既に追加されています。」(System.Collections.Generic.Dictionary で System.ThrowHelper.ThrowArgumentException(ExceptionResource リソース) で
2.Insert(TKey key, TValue value, Boolean add) at System.Collections.Generic.Dictionary
2.System.Collections.Generic.ICollection>.Add(KeyValuePair`2 keyValuePair) で proto_13(Object , ProtoReader )
protobuf はこれらのコレクション/辞書の変更を処理できますか? それとも、自分で変更をリッスンする必要がありますか?