Maison >développement back-end >C++ >Comment sérialiser une classe avec un membre de dictionnaire dans .NET 2.0 ?

Comment sérialiser une classe avec un membre de dictionnaire dans .NET 2.0 ?

DDD
DDDoriginal
2025-01-15 18:39:44711parcourir

Contient des méthodes de sérialisation pour les classes membres du dictionnaire sous .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.

How to Serialize a Class with a Dictionary Member in .NET 2.0?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn