码迷,mamicode.com
首页 > 其他好文 > 详细

20150317--序列化,反序列化(2)

时间:2015-03-17 10:25:21      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

序列化,反序列化除了转二进制之外还有另外一种序列化的方法:Soap序列化。

创建一个类,同样不要忘记序列化标记 [Serializable]

[Serializable]

public class StudentData
{
   public StudentData()
   {
   }

    private string _Code;

    public string Code
    {
        get { return _Code; }
        set { _Code = value; }
    }
    private string _Name;

    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }
    private string _Nation;

    public string Nation
    {
        get { return _Nation; }
        set { _Nation = value; }
    }
}

在cs中的需要添加引用:

using System.IO;//流

using System.Runtime.Serialization.Formatters.Soap;//Soap类,

Soap类需要先在项目上添加引用,右键--添加引用 到 引用管理器界面,搜索soap,选中并确定:

技术分享
序列化与反序列化按钮的代码(请注意文中加粗部分,这里是与二进制序列化的主要区别):

//序列化按钮
    protected void Button1_Click(object sender, EventArgs e)
    {
        stuDA ss = new stuDA
        {
            Code = TextBox1.Text,
            Name = TextBox2.Text,
            Nation = TextBox3.Text
        };
        FileStream fs = null;
        try
        {
            string path = Server.MapPath("data/bbb.txt");//映射服务器端的硬盘物理路径
            fs = new FileStream(path, FileMode.Create);//建立文件流
            SoapFormatter bf = new SoapFormatter();//soap格式化器
            bf.Serialize(fs, ss);//把对象序列化
        }
        finally
        {
            if (fs != null)
            {
                fs.Close();//流使用后必须关闭。
            }
        }
    }
    //反序列化
    protected void Button2_Click(object sender, EventArgs e)
    {
        string path = Server.MapPath("data/bbb.txt");
        FileStream fs = null;
        try
        {
            fs = new FileStream(path, FileMode.Open);//使用流打开文件

            SoapFormatter by = new SoapFormatter();//soap转化器

            stuDA sdata = (stuDA)by.Deserialize(fs);//反序列化成对象
            Label1.Text = sdata.Code;
            Label2.Text = sdata.Name;
            Label3.Text = sdata.Nation;
        }
        finally
        {
            if (fs != null)
            {
                fs.Close();
            }
        }
    }

在文本框中输入文字:

技术分享

序列化结果:

技术分享

这里可以很直观的看到对象中变量存储的文字信息。

反序列化:

技术分享

 

小结:二进制的序列化与Soap的序列化不可混用,用二进制方法进行的序列化,反序列化就必须用二进制的方法进行反序列化。此外,序列化可以放入SQL中,使用二进制序列化的流可以存放在SQL的img类型的列中。

20150317--序列化,反序列化(2)

标签:

原文地址:http://www.cnblogs.com/Tirisfal/p/4343546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!