0
votes

I am having a problems creating binary serialization for my observable collection of Contacts Objects. The Person Object contains the firstname,lastname, and age properties. The collection is called NewAccountList.

I want to be able to persist my collection data by saving it to a file. This action currently occurs when the save button is clicked, but it does xml serialization instead of binary serialization.

private void MenuItem_Click_2(object sender, RoutedEventArgs e) { // Create OpenFileDialog Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog(); XmlSerializer xs = new XmlSerializer(typeof(ObservableCollection)); sfd.Filter = "XML files (.xml)|.xml";

        // Display OpenFileDialog by calling ShowDialog method 
        Nullable<bool> result = sfd.ShowDialog();
        try
        {
            using (StreamWriter wr = new StreamWriter("SavedAccounts.xml"))
            {
                xs.Serialize(wr, NewAccountList);
            }
        }
        catch
        {}
    }

Would anybody be able to give me a good example of how to save a collection of objects?

2
System.Runtime.Serialization.Formatters.Binary has what you are looking for just make sure Contacts has the [Serilizable] attributeRadioSpace
Additionally, check out the following MSDN article: msdn.microsoft.com/en-us/library/4abbf6k0(v=vs.110).aspxRob Epstein

2 Answers

1
votes

full code example

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

        using (FileStream fs = File.Create("data.hffgfh"))
        {
            bf.Serialize(fs, 123456);
        }


    }
}
}

output: result

0
votes

Try changing .xml to .bin. That should fix your problem