I’m learning C# by writing a home library manager.
I have a BookController that will store the books in a data structure and perform operations on them.
Does C# have a way of saving the data in the dictionary to a local file perhaps in an XML fashion to load later, or am I going to have to write it myself?
What is the best method of saving and loading this data available to C#? Just need pointed in a good direction.
Actually, C# (the language) doesn’t know anything about serialization, but .NET (the framework) provides lots of ways…
XmlSerializer,BinaryFormatter,DataContractSerializer(.NET 3.0) – or there are a few bespoke serialization frameworks too.Which to use depends on your requirements;
BinaryFormatteris simple to use, but burns assembly metadata information into the file – making it non-portable (you couldn’t open it in Java, for example).XmlSerializerandDataContractSerializerare primarily xml-based, making it quite portable, but fairly large unless you compress it.Some proprietary serializers are half-way between the two; protobuf-net is a binary formatter (so very dense data), but which follows a portable standard for the data format (Google’s protocol buffers spec). Whether this is useful depends on your scenario.
Typical code (here using
XmlSerializer):