在C#中保存数据结构

Prä*_*olf 11 c# serialization

我正在通过写一个家庭图书馆经理来学习C#.

我有一个BookController,它将书籍存储在数据结构中并对它们执行操作.

C#是否有办法将字典中的数据保存到本地文件(可能是XML格式)以便稍后加载,或者我是否必须自己编写?

保存和加载C#可用数据的最佳方法是什么?只需指出一个好的方向.

Mar*_*ell 23

事实上,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);
        }
Run Code Online (Sandbox Code Playgroud)


Ed *_* S. 6

查看SerializationISerializable接口

它允许您以可移植的形式保存对象的状态.