Maison >développement back-end >C++ >Comment sérialiser une classe avec un membre de dictionnaire dans .NET 2.0 ?
Cet article prolonge une discussion précédente sur la question de la sérialisation des classes contenant des membres de dictionnaire. Cette classe contient trois attributs : guiPath
, configPath
et mappedDrives
. mappedDrives
est un dictionnaire mappant les lettres de lecteur aux chemins réseau.
Cependant, lors de la sérialisation ou de la désérialisation de la classe, l'utilisateur reçoit l'erreur suivante :
Impossible de sérialiser le membre App.Configfile.mappedDrives
Cette erreur se produit car, pour une raison quelconque, les dictionnaires génériques de .NET 2.0 ne sont pas sérialisables en XML.
Solution
Pour résoudre ce problème, les utilisateurs peuvent utiliser une classe de dictionnaire sérialisable personnalisée. Paul Welter propose un tel cours sur son blog :
<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 { // 部分代码省略 ... }</code>
Cette classe implémente l'interface IXmlSerializable
, lui permettant d'être sérialisée et désérialisée. Les utilisateurs peuvent ensuite utiliser cette classe de dictionnaire personnalisé dans leur classe principale :
<code class="language-csharp">// ... public Dictionary<string, string> mappedDrives = new SerializableDictionary<string, string>(); // ...</code>
Cela devrait permettre à la classe d'être sérialisée et désérialisée correctement.
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!