2009-10-25 4 views
1

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

ответ

4

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

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

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

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

+0

XML сериализации словаря является самая легкая вещь когда-либо! –

1

использование BinaryFormatter для сериализации экземпляра

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

0

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