static void Main()
        {
            for (int i = 0; i < 10; i++)
            {
                EnumSingletonWrapper.EnumSingleton singleton = EnumSingletonWrapper.EnumSingleton.SINGLETON;
                Console.WriteLine(singleton.ToString());
            }

            serializeSingleton();
        }
        static void serializeSingleton()
        {   // Serialize the singleton object
            EnumSingletonWrapper.EnumSingleton singleton = EnumSingletonWrapper.EnumSingleton.SINGLETON;
            IFormatter formatter = new BinaryFormatter();
            Stream     stream    = new FileStream("/Users/akin/Desktop/Singleton.ser", FileMode.Create, FileAccess.Write);

            formatter.Serialize(stream, singleton);
            stream.Close();

            // De-serialize back to create another singleton object
            stream = new FileStream("/Users/akin/Desktop/Singleton.ser", FileMode.Open, FileAccess.Read);
            EnumSingletonWrapper.EnumSingleton anotherSingleton = (EnumSingletonWrapper.EnumSingleton)formatter.Deserialize(stream);
            stream.Close();

            // They are the same object
            if (singleton == anotherSingleton)
            {
                Console.WriteLine("The same object!");
            }
            else
            {
                Console.WriteLine("Different objects!");
            }
        }