是否可以将任意数据保存到C#中的文件中?
-
06-07-2019 - |
题
我有一个在内存中加载了许多集合的类。是否有可能将这个类及其所有数据保存到文件中,以便以后能够简单地将其重新加载到内存中?是否有可以处理所有这些的界面?
解决方案
您所描述的内容称为序列化。您可以将对象分类为可以存储在磁盘上的某种数据格式,然后可以将该数据反序列化为对象。有很多方法可以做到这一点,但第一步是通过添加Serializable属性使您的类可序列化:
[Serializable]
public class YourClass
{
// the class goes here
}
然后你可以使用例如 XmlSerializer
类来处理序列化/反序列化。
<强>更新强>结果
我应该提一下,即使您的类没有使用 Serializable
属性进行修饰,也可以使用 XmlSerializer
。但是,其他一些序列化机制确实需要该属性。
其他提示
使用 BinaryFormatter 序列化实例
在类定义
前面添加[Serializable]属性您可以使用.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;
}
}
不隶属于 StackOverflow