2010-06-17 4 views
3

J'utilise Protobuf-net. Supposons que j'ai une liste d'objets Gizmo sérialisés et que chaque objet gizmo fasse référence à un objet Gazoo. L'objet Gazoo peut être le même objet référencé par plusieurs objets Gizmo.Avec Protobuf-net, permet-il la désérialisation de réutiliser des instances existantes si elles sont identiques?

Comment la désérialisation fonctionnerait-elle dans cette situation? Est-ce que j'aurais plus d'une copie de Gazoos pour la même référence dans les objets gizmo? Ce que j'attendrais serait une copie de Gazoo pour tous les doublons dans les données sérialisées.

Répondre

6

Le fil format défini par Google est un arbre sérialiseur, pas un graphique sérialiseur, si les références sont-objets pas conservés. Cependant, une fois que je reçois "v2", j'ai quelques plans infâmes de pirater le support de référence d'objet/graphe dans le modèle - essentiellement par (dans ce mode) incluant des données d'ID d'objet supplémentaires. Cette le rendra quelque peu difficile à utiliser dans les scénarios d'interopérabilité, donc idéalement seulement bon pour protobuf-net < ===> protobuf-net.

Mais rien aujourd'hui - vous obtiendrez plusieurs copies, ou si vous obtenez une référence circulaire, il devrait exploser.


Comme une mise à jour: c'est maintenant disponible dans v2 protobuf-net, mais comme une caractéristique spécifique à la mise en œuvre en dehors de la spécification de code.

+0

Comme toujours, bonne réponse! Je vous remercie. –

+0

@stecey c'est maintenant disponible, par exemple –

+0

@ marc-gravell, comment puis-je l'utiliser? Dois-je utiliser des attributs spéciaux? objA.Ref = objB; objB.Ref = objA; - Ce scénario ne fonctionne pas pour moi pour le moment. Version protobuf-net: 2.0.0.470. – Rover

Questions connexes