我正在通过编写家庭图书馆管理员来学习C#。

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

C#是否有可能以XML方式将字典中的数据保存到本地文件中以供以后加载,还是我必须自己编写呢?

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

最佳答案

实际上,C#(语言)不了解关于序列化的任何信息,但是.NET(框架)提供了许多方法... XmlSerializerBinaryFormatterDataContractSerializer(.NET 3.0)-或有一些定制的序列化框架也。

使用哪种取决于您的要求; BinaryFormatter易于使用,但是会将程序集元数据信息刻录到文件中-使其不可移植(例如,您无法在Java中打开它)。 XmlSerializerDataContractSerializer主要基于xml,使其具有可移植性,但是除非压缩,否则它会很大。

一些专有的串行器位​​于两者之间。 protobuf-net是二进制格式化程序(数据非常密集),但是遵循数据格式的可移植标准(Google的 Protocol Buffer 规范)。这是否有用取决于您的方案。

典型代码(此处使用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);
        }

10-01 02:15
查看更多