我正在通过写一个家庭图书馆经理来学习C#.
我有一个BookController,它将书籍存储在数据结构中并对它们执行操作.
C#是否有办法将字典中的数据保存到本地文件(可能是XML格式)以便稍后加载,或者我是否必须自己编写?
保存和加载C#可用数据的最佳方法是什么?只需指出一个好的方向.
事实上,C#(语言)不知道任何有关序列,但.NET(框架)提供了很多的方法... XmlSerializer
,BinaryFormatter
,DataContractSerializer
(.NET 3.0) -或有一些定制的序列化框架了.
使用哪个取决于您的要求; BinaryFormatter
使用简单,但将程序集元数据信息刻录到文件中 - 使其不可移植(例如,您无法在Java中打开它).XmlSerializer
并且DataContractSerializer
主要是基于xml的,使它非常便携,但除非你压缩它,否则相当大.
一些专有的序列化器位于两者之间; protobuf-net是一个二进制格式化程序(非常密集的数据),但遵循数据格式的便携式标准(Google的协议缓冲区规范).这是否有用取决于您的方案.
典型代码(此处使用XmlSerializer
):
XmlSerializer ser = new XmlSerializer(typeof(Foo)); // write using (var stream = File.Create("foo.xml")) { ser.Serialize(stream, foo); // your instance } // read using (var stream = File.OpenRead("foo.xml")) { Foo newFoo = (Foo)ser.Deserialize(stream); }
查看Serialization和ISerializable接口
它允许您以可移植的形式保存对象的状态.