Est-ce que quelqu'un connaît une manière créative de sérialiser des objets qui implémentent IDictionary? ... sans mettre en place une nouvelle classe?Comment sérialiser IDictionary
Répondre
Si la classe est mise en œuvre IDictionary
sérialisable (comme Dictionary<K,V>
) et K
et V
sont sérialisable alors les mécanismes standards de sérialisation .NET devraient fonctionner.
Si la classe implémentant IDictionary
est sérialisable mais K
et V
sont alors vous pouvez utiliser deux tableaux pour sérialiser les clés et les valeurs associées séparément:
// before serialization
IDictionary<string,int> dict;
string[] keys = dict.Keys.ToArray();
int[] values = dict.Keys.Select(key => dict[key]).ToArray();
// after deserialization
IDictionary<string,int> dict = new Dictionary<string,int>();
for (int i = 0; i < keys.Length; i++)
dict.Add(keys[i], values[i]);
Je suppose que vous voulez dire que vous devez sérialiser un dictionnaire qui est une partie de la classe sur laquelle vous n'avez aucun contrôle?
En résumé, vous devez sérialiser les clés et les valeurs séparément. Pour désérialiser, parcourez chaque élément dans les tableaux de clés/valeurs et ajoutez-les à votre dictionnaire.
Vous pouvez utiliser le System.Runtime.Serialization.DataContractSerializer
, avec ReadObject
et WriteObject
la même manière que vous le feriez Deserialize
et Serialize
. Cela fonctionne comme un charme.
Sera-t-il sérialisé/désérialisé en ligne? Autrement dit, la sérialisation principale est xml, mais elle peut injecter juste pour la propriété IDictionary qui cause le problème? – toddmo
- 1. Comment sérialiser?
- 2. IDictionary à SelectList?
- 3. Objectif de l'interface IDictionary
- 4. Comment sérialiser à dateTime
- 5. Comment sérialiser System.Configuration.SettingsProperty
- 6. IDictionary et Connection.RetrieveStatistics .NET/C#
- 7. Comment pouvez-vous sérialiser/sérialiser le code Ruby?
- 8. Comment XML sérialiser un 'Type'
- 9. Comment puis-je sérialiser correctement
- 10. Comment (xml) sérialiser un uri
- 11. Comment sérialiser les propriétés jointes
- 12. Comment sérialiser SettingsContext et SettingsPropertyCollection
- 13. Comment sérialiser un message électronique?
- 14. Filtre IDictionary (De TK, TV) à un IDictionary (De TK, TV) avec linq
- 15. Comment mapper IDictionary qui a une valeur IList?
- 16. COM Interop IDictionary - Comment récupérer une valeur en C#?
- 17. IDictionary <string, string> ou NameValueCollection
- 18. Directives pour l'utilisation de IDictionary (.NET)
- 19. NHibernate 2.0: Problème avec Cfg.Configuration.SetProperties IDictionary
- 20. Comment sérialiser les collections Hibernate correctement?
- 21. Comment mieux sérialiser une image java.awt.Image?
- 22. Comment sérialiser une structure de graphe?
- 23. comment sérialiser et désérialiser le membre statique
- 24. Comment sérialiser des collections dans .net
- 25. Comment sérialiser un objet COM dans .Net?
- 26. Annotations XML sérialiser
- 27. Transférer ou sérialiser l'assemblage
- 28. Sérialiser l'objet à XmlDocument
- 29. Code courant pour mapper un IDictionary <SomeEntity, int>?
- 30. PHP - Sérialiser les points flottants
En raison de certains accesseurs fous que j'ai dans la classe, j'ai été incapable de mettre en œuvre cette solution particulière, mais c'était le type de solution créative que je cherchais ... donc je vais marquer cela comme la réponse. Merci! –