Maison >développement back-end >C++ >Comment puis-je sérialiser une classe contenant un membre de dictionnaire générique en C# ?

Comment puis-je sérialiser une classe contenant un membre de dictionnaire générique en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 18:36:43412parcourir

How Can I Serialize a Class Containing a Generic Dictionary Member in 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!

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