c# Как я могу правильно сериализовать значок?

#c# #serialization #binaryformatter

Вопрос:

Я пытаюсь сериализовать список значков в файл кэша для последующего использования. При использовании BinaryFormatter для сериализации кажется, что значки сильно теряют качество при десериализации.

Существует ли правильный способ сериализации значков без потери качества?

Мой код для сериализации и десериализации:

 //Serialization  
List<Icon> icons = GetIcons(); //some function that gets the icons
BinaryFormatter formatter = new BinaryFormatter();

using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
    formatter.Serialize(fs, icons);
}

//Deserialization
List<Icon> icons = new List<Icon>();
BinaryFormatter formatter = new BinaryFormatter();

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
    icons = (List<Icon>)formatter.Deserialize(fs);
}
 

Комментарии:

1. Вызовите Save метод для каждого объекта значка, чтобы вывести значок в поток, а затем вы можете сохранить этот поток, где захотите. Вы не можете просто сериализовать обычные классы.

2. Сравните список ввода и список вывода и посмотрите, есть ли точно такие же. Тогда проблема возникает после публикации кода. Проблема возникает из-за метода, используемого для отображения значка.

3. @jdweng, это имеет абсолютно нулевой смысл, а также просто неправильно.

4. К вашему сведению: Вы не должны использовать двоичный формат

5. @DavidG : Что плохого в сравнении ввода и вывода для отладки и поиска основной причины проблемы?