你可以试试将MailMessage对象序列化为字节,然后保存到数据库中。

解决方案 »

  1.   

    那你得有这样的架构,简而言之:数据库按MailMessage对象实例建表业务中需有等同于该表的MailMessage的对象类再写一个Reader类,完成功能:读取该表中的一行数据便还原成一个实例化的对象。
      

  2.   

    MSDN上有序列化的主题帮助,你看下就行了。我也刚接触的C#,呵呵。从数据库中将对象字节取出再反序列化即可重显对象。
      

  3.   

    //将一个对象序列化成二进制数组
            private byte[] SerializeToByte(ArrayList list)
            {
                //假如Arraylist为空,则返回null
                if (list.Count == 0)
                {
                    return null;
                }
                byte[] array = null;
                try
                {
                    //定义一个流
                    Stream stream = new MemoryStream();
                    //定义一个格式化器
                    BinaryFormatter bf = new BinaryFormatter();
                    //将Arraylist中的对象逐一进行序列化
                    foreach (object obj in list)
                    {
                        bf.Serialize(stream, obj);
                    }
                    array = new byte[stream.Length];
                    //将二进制流写入数组
                    stream.Position = 0;
                    stream.Read(array, 0, (int)stream.Length);
                    //关闭流
                    stream.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return null;
                }
                return array;
            }        //将一个二进制数组反序列化
            private ArrayList DeseralizeToArraylist(byte[] b)
            {
                if (b == null || b.Length == 0)
                {
                    return null;
                }
                //定义一个流
                MemoryStream stream = new MemoryStream(b);
                //定义一个格式化器
                BinaryFormatter bf = new BinaryFormatter();
                ArrayList list = new ArrayList();
                while (stream.Position != stream.Length)
                {
                    list.Add(bf.Deserialize(stream));
                }
                stream.Close();
                return list;
            }
    以上两个函数:
    一个是将一个对象的列表(一系列对象存储在ArrayList中)中的对象依次序列化成二进制流...另外一个是将一个二进制数组反序列化成一个对象列表(存储在ArrayList中,返回)..
      

  4.   

    再举个例子,把我两个月前初学序列化的例子给翻出来了..这个是写入文件的,再从文件中反序列化回来,显示..string fileName = "mutiSerialize.bat";
                Person[] personList ={ new Person("liujia", 1000), new Person("liming", 1500) };
                School[] schoolList ={ new School("001", "bjtu"), new School("002", "xitu") };
                //序列化过程开始
                IFormatter formatter = new BinaryFormatter();
                Stream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None);
                //将几个对象序列化到一个文件中
                for (int i = 0; i < personList.Length; i++)
                {
                    formatter.Serialize(stream, personList[i]);
                }
                for (int j = 0; j < schoolList.Length; j++)
                {
                    formatter.Serialize(stream, schoolList[j]);
                }
                stream.Close();//序列化完成
                
                //反序列化过程开始
                IFormatter formatter11 = new BinaryFormatter();
                Stream stream11 = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
                long lenth11 = stream11.Length;
                ArrayList list11 = new ArrayList();
                while (stream11.Position != lenth11)
                {
                    list11.Add (formatter11 .Deserialize (stream11 ));
                }
                stream11 .Close ();//反序列化过程结束            //显示反序列化结果
                foreach (object o in list11)
                {
                    //判断对象类型,分别进行处理
                    if (o != null && o.GetType().Name =="School")
                    {
                        Console.WriteLine("SchoolId:{0}\tSchoolName:{1}", ((School)o).SchoolId, ((School)o).SchoolName);
                    }
                    else if (o != null && o.GetType().Name == "Person")
                    {
                        Console.WriteLine("Name:{0}\tSalary:{1}", ((Person)o).Name, ((Person)o).Salary);
                    }
                }
      

  5.   

    或者你直接看看这个贴子:http://community.csdn.net/Expert/topic/5298/5298838.xml?temp=.0739252我在里面讲得已经很清楚了...