Я пытаюсь сериализовать Hashset, но мне не повезло. Всякий раз, когда я пытаюсь открыть сериализованные данные, я получаю пустой HashSet. Однако Список отлично работает. Пример кода:Сериализация 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);
}
}
И при запуске, он печатает:
Printing Hashset:
Printing List:
One
Two
Three
Так что список работает отлично, но HashSet возвращается пустым. Немного застрял - может ли кто-нибудь увидеть, что я делаю неправильно? Благодаря
Зачем вы сериализуете себя? Почему бы не использовать DataContractSerializer? –