how How to do singleton serialization in C#?

 

Questions


I go to the MSDN to search the singleton serialization, and find the source code http://msdn.microsoft.com/en-us/library/system.runtime.serialization.serializationinfo.aspx
but I had problems when I changed some part of the code. I divide it into two program : serialization and deserialization. Below is the Main function of the two(other classes are in the msdn documentation, link is at the second line).
Serialization program is below:

    public static void Main()
    {
    FileStream fs = new FileStream("DataFile.dat", FileMode.Create);

    try 
    {
        // Construct a BinaryFormatter and use it 
        // to serialize the data to the stream.
        BinaryFormatter formatter = new BinaryFormatter();

        // Create an array with multiple elements refering to 
        // the one Singleton object.
        Singleton[] a1 = { Singleton.GetSingleton(), Singleton.GetSingleton() };

        a1[0].SomeNumber = 555;

        formatter.Serialize(fs, a1);

    }   
    catch (SerializationException e) 
    {
        Console.WriteLine("Failed to serialize. Reason: " + e.Message);
        throw;
    }
    finally 
    {
        fs.Close();
    }
    }

Deserialization program:

    public static void Main()
    {
    FileStream fs = new FileStream("DataFile.dat", FileMode.Open);

    try 
    {
        // Construct a BinaryFormatter and use it 
        // to serialize the data to the stream.
        BinaryFormatter formatter = new BinaryFormatter();


        Singleton[] a2 = (Singleton[]) formatter.Deserialize(fs);

        // This displays "True".
        Console.WriteLine(a2[0].SomeNumber);
    }   
    catch (SerializationException e) 
    {
        Console.WriteLine("Failed to serialize. Reason: " + e.Message);
        throw;
    }
    finally 
    {
        fs.Close();
    }
    }

After I executed the two program, the console didn’t print 555 but still 123, why? I can’t figure it out and got stuck in it for the whole day, can anybody help me ?

 

 

————————————————-

Answer

c#

[]

Facebook Comments

Post a comment