La sérialisation d'un HashSet

Je suis en train de sérialiser un Hashset, mais je vais avoir pas de chance. Chaque fois que j'essaie d'ouvrir les données sérialisées, je reçois un vide HashSet. Cependant, une Liste fonctionne très bien. Exemple de code:

[Serializable()]
public class MyClass : ISerializable
{
    public MyClass(SerializationInfo info, StreamingContext ctxt)
    {
        HashSet<string> hashset = (HashSet<string>)info.GetValue("hashset", typeof(HashSet<string>));
        List<string> list = (List<string>)info.GetValue("list", typeof(List<string>));
        Console.WriteLine("Printing Hashset:");
        foreach (string line in hashset)
        {
            Console.WriteLine(line);
        }
        Console.WriteLine("Printing List:");
        foreach (string line in list)
        {
            Console.WriteLine(line);
        }
    }

    public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
    {
        HashSet<string> hashset = new HashSet<string>();
        hashset.Add("One");
        hashset.Add("Two");
        hashset.Add("Three");
        info.AddValue("hashset", hashset);
        List<string> list = new List<string>();
        list.Add("One");
        list.Add("Two");
        list.Add("Three");
        info.AddValue("list", list);
    }
}

Et lorsqu'il est exécuté, il imprime:

Printing Hashset:
Printing List:
One
Two
Three

De sorte que la Liste fonctionne bien, mais le HashSet est de retour à vide. Un peu coincé - n'importe qui peut voir ce que je fais mal? Grâce

  • Pourquoi faites-vous la sérialisation vous-même? Pourquoi ne pas utiliser le DataContractSerializer ?
InformationsquelleAutor Frederik | 2010-11-16