将对象保存到文件

时间:2012-07-26 08:48:18

标签: c# serialization

我正在构建一个小应用程序,我需要将我的数据存储到文件中。我读了一些关于保存对象的内容我以前用Java做过这个,但那是几年前的事了。然后我保存了一系列objets,我想知道我是否可以在C#中做同样的事情以及如何做到这一点?

我正在使用名为Animals的List,我也已将该类序列化,因为这是此任务的需求。如果我序列化了Animal类,那么我想我不需要将子类序列化为Animal?

一些帮助是预先确定的,谢谢!

编辑:

嗨agian!我已经制作了一些测试代码来保存列表,我只是想知道我做得对吗?我还没有添加任何Try / Catch代码。当我打开文件并阅读列表时,列表是否会作为一个整体加载?反馈是预先确定的!

filestream = new FileStream(filePath, FileMode.Create);
        BinaryFormatter b = new BinaryFormatter();
        b.Serialize(filestream, animals);
        filestream.Close();

3 个答案:

答案 0 :(得分:0)

如果您的类仅包含Serializable类型,则可以将基类和所有子类标记为可序列化。这是通过Serializable属性

完成的

答案 1 :(得分:0)

看起来你正在做一个快速的例子,在这种情况下使用serialisable可能很好,但是你会很快发现它真的很难使用,对标记为serialisable的类的任何更改都会使旧文件不可读。

这使得序列化适用于非常短暂的存储,例如 - 在步骤之间保持批处理程序的状态或通过网络传输数据。如果您实际上是在编写文件,那么最好设计文件格式。

一个很好用的语言是xml - 它基本上是为输出树状结构而设计的,并且很容易添加,因为所有内容都是按名称读取而不是位置。

如果你只有非常简单的数据,你可以设计一种文本格式;一些简单的选项是使用制表符或空格分隔。如果您有多态类型,您可能需要稍微考虑一下以获得适用于它们的数据结构,或者您可以拥有所有子类型字段,然后使用“类型”条目区分它们,例如:

(空格分隔)
键入NumberOfLegs NumberOfFins
鱼 - 2
獾4 -
SeaDog 3.5 7

答案 2 :(得分:0)

对象的序列化是一件好事。它允许您存储对象的状态,与其他系统共享对象,在业务层和应用程序前端之间传递对象。

一般来说,总是说明你需要什么样的序列化:binary,xml,json?两个系统相互通信的方式会影响选择。

你说你不需要xml序列化。不是吗?管理二进制序列化对象的日志记录,调试和跟踪非常不安。你不需要XML吗?没关系,让我们使用自定义序列化程序,但帮助自己避免二进制序列化。除非有必要!!

无论如何,这里有msdn链接: