问题类using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;namespace SNS_DCC
{
    /// <summary>
    /// 单例模式类, 请使用GetInstance 获取该类.
    /// </summary>
    [Serializable]
    public class MongoDBInfo
    {
        private static MongoDBInfo instance = new MongoDBInfo();
       public static int ss = 0;
        /// <summary>
        /// 禁止创建类
        /// </summary>
        private MongoDBInfo()
        {
        }
        /// <summary>
        /// 获取实例
        /// </summary>
        /// <returns></returns>
        public static MongoDBInfo GetInstance()
        {
            return instance;
        }        private  DateTime identificationTime;        private  Stack<string> blogsDBNameQueue=new Stack<string>();
        /// <summary>
        /// 博文数据库名队列
        /// </summary>
        public  Stack<string> BlogsDBNameQueue
        {
            get
            {
                GetPrepare();
                return this.blogsDBNameQueue;
            }
            //set
            //{
            //    //GetPrepare();
            //    //this.blogsDBNameQueue = value;
            //    //SetBackup();
            //}
        }        public void GetPrepare()
        {
            if (!(this.identificationTime != null && DateTime.Compare(this.identificationTime, Convert.ToDateTime("2010-05-05")) > 0))
                DeSerializableNow();
        }        public static void SetBackup()
        {
            SerializableNow();
        }        /// <summary>
        /// 序列化
        /// </summary>
        public static void SerializableNow()
        {
            FileStream fileStream = new FileStream("MongoDBInfo.dat", FileMode.Create);
            BinaryFormatter b = new BinaryFormatter();
            b.Serialize(fileStream, instance);
            fileStream.Close();
        }        /// <summary>
        /// 反序列化
        /// </summary>
        public static void DeSerializableNow()
        {
           
            if (System.IO.File.Exists("MongoDBInfo.dat"))
            {
                FileStream fileStream = new FileStream("MongoDBInfo.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
                BinaryFormatter b = new BinaryFormatter();
                instance = b.Deserialize(fileStream) as MongoDBInfo;
                fileStream.Close();
                instance.identificationTime = DateTime.Now;
            }
        }
    }
}前台调用: <%SNS_DCC.MongoDBInfo.GetInstance().BlogsDBNameQueue.Push("456"); %>必须在程序第一次运行时候有用!在get
{
    GetPrepare();
    return this.blogsDBNameQueue;
}加一个断点 跑到此处时this 是刚刚new的状态 new MongoDBInfo();
但是如果在每个方法中 加断点  你会发现 再次运行到此处 this 是从MongoDBInfo.dat 中读取的对象.
当然为了区别 是新new的还是读取的值 MongoDBInfo.dat  一定要是存有值得序列化文件