Je suis en train de parler à un programme C# qui utilise protobuf-net à partir d'un iPhone en utilisant http://code.google.com/p/metasyntactic/wiki/ProtocolBuffersprotobuf-net - contre-apostrophes, fichiers Dictionnaires et .proto
Malheureusement, le fichier .proto m'a donné (généré du C# code source) comprend une ligne qui protoc rejette:
repeated Pair_Guid_List`1 Local = 6;
Il semble que ce soit parce que les données source est un C# Dictionnaire, avec une clé Guid et une classe en tant que valeur. Existe-t-il un moyen de mieux gérer cela?
La version de protobuf-net utilisée est r278.zip.
(C# envoyer et recevoir ces protobufs tout fonctionne très bien, il est juste quand nous ajoutons l'iPhone dans le mélange que cela devient un problème.)
MISE À JOUR: tous travailler grâce à Marc!
L'objet du côté C# est avéré être:
[ProtoMember(7)]
public Dictionary<Guid, List<Pages>> ReceivedPages { get; set; }
qui a bien fonctionné en utilisant ce qui suit dans le .proto:
message PagesDict {
required bcl.Guid guid = 1;
repeated Pages Pages = 2;
}
avec le message en question contenant:
repeated PagesDict ReceivedPages = 7;
Merci pour votre réponse Mark! J'utilise http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers sur l'iphone - ceci génère du code Objective C natif à partir du fichier .proto. Il utilise en effet Serializer.GetProto. Merci pour la description de la modélisation - Je vais essayer de définir le message comme ça. –
JosephH
Juste pour dire, j'ai tout compris. L'objet du côté C# s'est avéré être: [ProtoMember (7)] public Dictionary> ReceivedPages {get; ensemble; } qui a bien fonctionné en utilisant ce qui suit dans le fichier .proto: message PagesDict { requis bcl.Guid guid = 1; Pages répétées Pages = 2; } répété PagesDict ReceivedPages = 6; –
JosephH