研究序列化与反序列化的课题.

来源:互联网 发布:淘宝禁售品 编辑:程序博客网 时间:2024/04/29 20:12

using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using System.IO;

namespace 序列化
{
    /// <summary>
    /// 研究序列化与反序列化的课题.
    /// 利用配置文件对一个类进行初始化
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            #region 序列化

            ///序列化类.
            ///1.创建该类.
            ///2.使用XmlSerializer对像.把要序列化的对像,在构造的时候传入.
            ///3.使用StreamWriter对像把内容写到指定的配置文件里面.(构造的时候把XML文件地址写上)
            ///4.最重要的,调用StreamWriter对象的Serialize方法,执行写入.
            ///5.不要忘了关闭
            ///

            myclass cla = new myclass();
            ///构造可用于序列的XML对象
            XmlSerializer xml = new XmlSerializer(typeof(myclass));//注意这里的参数

            StreamWriter Swrite = new StreamWriter("c:/news.xml");//构造一个写流的对象/
            xml.Serialize(Swrite, cla);
            Swrite.Close();

            myclass cl = new myclass();

//  将对象序列化到 XML 文档中和从 XML 文档中反序列化对象。System.Xml.Serialization.XmlSerializer 使您得以控制如何将对象编码到
            XmlSerializer myxml = new XmlSerializer(typeof(myclass));
            //建立可写入的流

           
    //     实现一个 System.IO.TextWriter,使其以一种特定的编码向流中写入字符。
            //StreamWriter Write = new StreamWriter("c:/sxx.xml");
            //myxml.Serialize(Write, cl);

            //Write.Close();


            MySerializableClass myObject1 = new MySerializableClass();
          
            XmlSerializer mySerializer1 = new
            XmlSerializer(typeof(MySerializableClass));

            StreamWriter myWriter = new StreamWriter("c:/mName.xml");
            mySerializer1.Serialize(myWriter, myObject1);
            myWriter.Close();

            #endregion

            #region 反序列化

            myclass myfan;
            XmlSerializer xmlFan = new XmlSerializer(typeof(myclass));
            //这个跟之前一样.构造序列化的对象


            //打开一个流
            FileStream StreamFan = new FileStream("c:/sxx.xml", FileMode.Open);

            myfan = (myclass)xmlFan.Deserialize(StreamFan);//反序列
            Console.WriteLine(myfan.Name);


            //============================================================
            MySerializableClass myObject;
          
            XmlSerializer mySerializer =
            new XmlSerializer(typeof(MySerializableClass));
       
           
            FileStream myFileStream =
            new FileStream("c:/myFileName.xml", FileMode.Open);
          
           
            myObject = (MySerializableClass)
            mySerializer.Deserialize(myFileStream);

            Console.WriteLine(myObject.Dbconnectstring);
            Console.Read();
            #endregion


        }
    }
    [Serializable]
    public class myclass
    {
        private string _name = "唐2龙";

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age = 18;

        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private DateTime _dt;

        public DateTime Dt
        {
            get { return _dt; }
            set { _dt = value; }
        }

        public void run()
        {
 
        }
    }


 
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Xml.Serialization;

namespace SerializationDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        SumOf sObj;
        private void button1_Click(object sender, EventArgs e)
        {
            // create a file stream to write the file
            FileStream fileStream = new FileStream("DoSum.bin", FileMode.Create);
            // use the CLR binary formatter
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            // serialize to disk
            binaryFormatter.Serialize(fileStream, sObj);
            fileStream.Close();

        }
        private SumOf BuildSumObj()
        {
            SumOf sObj = new SumOf();
            for (int i = 0; i < this.numericUpDown1.Value; i++)
            {
                sObj.Members.Add(i);
            }
            sObj.Calculate();
            return sObj;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // create a file stream to write the file
            FileStream fileStream = new FileStream("DoSum_Soap.xml", FileMode.Create);
            // use the CLR binary formatter
            SoapFormatter formatter = new SoapFormatter();
            // serialize to disk
            formatter.Serialize(fileStream, sObj);
            fileStream.Close();

        }

        private void button3_Click(object sender, EventArgs e)
        {
            sObj = this.BuildSumObj();
            this.toolStripStatusLabel1.Text =
                string.Format("数量:{0},合计:{1},平均值:{2}", sObj.Members.Count, sObj.Sum, sObj.Avg);

        }

        private void button4_Click(object sender, EventArgs e)
        {
            // create a file stream to write the file
            FileStream fileStream = new FileStream("DoSum.xml", FileMode.Create);
            // use the CLR binary formatter
            System.Xml.Serialization.XmlSerializer
                formatter = new XmlSerializer(typeof(SumOf));
            // serialize to disk
            formatter.Serialize(fileStream, sObj);
            fileStream.Close();
        }
    }
}

原创粉丝点击