Maison >développement back-end >C++ >Comment puis-je sérialiser une classe contenant un membre de dictionnaire générique en C# ?
Sérialisation d'une classe contenant des membres de dictionnaire génériques en C#
Lors de la tentative de sérialisation d'une classe de profil, une erreur s'est produite lors de la tentative de sérialisation du membre du dictionnaire. Malgré l'utilisation de Dictionary, HybridDictionary et Hashtable, j'obtiens toujours l'erreur suivante : « Impossible de sérialiser le membre App.Configfile.mappedDrives ».
Analyse du problème
Normalement, Dictionary et Hashtable sont sérialisables, mais certains types d'objets Dictionary peuvent ne pas être intrinsèquement sérialisables. Dans ce cas, le problème vient de la tentative de sérialisation d’un dictionnaire de type générique.
Solution
Le blog de Paul Welter propose un dictionnaire générique XML sérialisable qui implémente l'interface IXmlSerialisisable, permettant une sérialisation et une désérialisation efficaces.
Mise en œuvre de la solution
La solution peut être implémentée à l'aide de l'extrait de code suivant :
<code class="language-csharp">using System; using System.Collections.Generic; using System.Text; using System.Xml.Serialization; [XmlRoot("dictionary")] public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable { // ... 省略 SerializableDictionary 类的实现细节 ... }</code>
En résumé, pour sérialiser une classe contenant un membre de dictionnaire générique, vous devrez peut-être implémenter une classe de dictionnaire sérialisable XML personnalisée qui prend explicitement en charge l'interface IXmlSerialisisable. Cela permettra une sérialisation et une désérialisation efficaces des dictionnaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!