Je voudrais pouvoir mettre à jour des objets en sérialisant/désérialisant seulement le champ qui a changé. J'utilise la version non générique du sérialiseur puisque je ne connais pas le type à la compilation. À l'exécution, j'ai le type cependant.Peut-on partiellement sérialiser un objet en utilisant Protobuf-net?
Localement Je veux faire quelque chose comme:
var existingObject.SomeField = 10;
// Say I only want to serialize field B
byte[] serializedField = SerializeField(existingObject, "SomeField")
Remotely Je désérialiser et créer un nouvel objet:
Merge(serializedField, existingObject);
Il ne semble pas être un moyen de le faire en utilisant le non générique interface?
Merci Marc. Le modèle ShouldSerialize serait utile. Dire que je pourrais l'obtenir pour sérialiser partiellement cependant. Comment désérialiser? Voici le problème que j'ai. Je sérialise un objet avec des valeurs par défaut à l'exception d'un seul champ que j'ai défini. Plus tard, je veux réinitialiser l'objet à distance par défaut en lui envoyant le nouvel objet vide sérialisé. L'objet mis à jour est très petit car aucun champ n'est défini. Fusionner ceci dans l'original n'a aucun effet. Mon intention est de mettre le champ à zéro. Donc, vraiment, je veux désérialiser dans un objet existant, mais effacer les champs existants en premier. – Johan
@Johan - ne suit pas entièrement. Si vous voulez dire "comment charger les changements dans un objet existant", c'est ce que 'Merge' est pour - ou, dans v2 - juste passer cet objet dans' Deserialize'. –