Можно ли сохранить произвольные данные в файл на C #?

StackOverflow https://stackoverflow.com/questions/1620569

Вопрос

У меня есть класс с большим количеством коллекций, загруженных в память.Возможно ли каким-то образом сохранить этот класс со всеми его данными в файл, чтобы иметь возможность позже просто перезагрузить его в память?Есть ли интерфейс, который бы справлялся со всем этим?

Это было полезно?

Решение

То, что вы описываете, называется сериализация.Вы преобразуете объект в некоторый формат данных, который вы можете сохранить на диске, а затем вы можете позже десериализовать эти данные в объект.Есть много способов сделать это, но первым шагом будет сделать ваш класс сериализуемым, добавив атрибут Serializable:

[Serializable]
public class YourClass
{    
    // the class goes here
}

Тогда вы можете использовать, например, XmlSerializer класс для обработки сериализации / десериализации.

Обновить
Я должен упомянуть, что вы можете использовать XmlSerializer даже если ваш класс не украшен Serializable атрибут.Однако для некоторых других механизмов сериализации этот атрибут требуется.

Другие советы

используйте BinaryFormatter сериализовать экземпляр

И добавьте атрибут [Serializable] перед определением класса

Вы можете использовать .Средство сетевой сериализации, просто вам нужно пометить свой класс атрибутом [Serializable], и все члены также должны быть сериализуемыми

Пример кода:

using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class A
{
public static void Serialize(object obj,string filepath)
{
Formatter f = new BinaryFormatter();
f.Serialize(new FileStream(filepath,FileMode.Create),obj);
}
public static A Deserialize(string filepath)
{
Formatter f = new BinaryFormatter();
return  f.Deserialize(new FileStream(filepath, FileMode.Open)) as A;
}
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top