J'essaie de sérialiser un Hashset mais je n'ai pas de chance. Chaque fois que j'essaie d'ouvrir les données sérialisées, j'obtiens un HashSet vide. Cependant, une liste fonctionne bien. Exemple de code:Sérialiser un HashSet
[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 lors de son exécution, il imprime:
Printing Hashset:
Printing List:
One
Two
Three
Ainsi la liste fonctionne très bien, mais le HashSet revient vide. Un peu coincé - quelqu'un peut-il voir ce que je fais mal? Merci
Pourquoi faites-vous vous-même la sérialisation? Pourquoi ne pas utiliser DataContractSerializer? –