Можно ли сохранить произвольные данные в файл в C #? - PullRequest
1 голос
/ 25 октября 2009

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

Ответы [ 3 ]

4 голосов
/ 25 октября 2009

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

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

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

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

1 голос
/ 25 октября 2009

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

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

0 голосов
/ 25 октября 2009

Вы можете использовать .Net Serialization средство, просто вы должны пометить свой класс с атрибутом [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;
}
}
...