.net 序列化反序列化

 .net 序列化、反序列化技术

  1. 序列化】 就是将我们程序中的对象通过字节流写入存储媒体或网络中。
  2. 反序列化】 就是把已存入的媒体或接收的网络流中的内容转换成程序运行中的对象。

  实现方式: 二进制序列化 XML序列化

  二进制序列化需要引入System..Runtime.Serialization.Formatters.Binary 中的BinaryFormatter类, 序列化方法为Serialize(Stream s, object o), 反序列化方法DeSerialize(Stream s).
XML序列化可分为Soap格式和一般xml格式序列化。分别采用System.Runtime.Serialization.Formatters.Soap.SoapFormatter 和 XmlSerializer类的以上两种方法;
  示例:
1)用到类User
    [Serializable]
    
public   class  User
    
{
       
            [NonSerialized]             //不对_usercode进行序列化, [NoSerialized]只能加在域成员前面
        private string _usercode;
        
private string _username;

        
public string UserCode
        
{
            
get return _usercode; }
            
set { _usercode = value; }
        }


        
public string UserName
        
{
            
get return _username; }
            
set { _username = value; }
        }

    }
2) 二进制序列化
  FileStream fs  =   new  FileStream( @" D:/user.dat " , FileMode.OpenOrCreate);
        User user 
=   new  User();
        user.UserCode 
=   " 0001 " ;
        user.UserName 
=   " KILL " ;

        BinaryFormatter bf 
=   new  BinaryFormatter();
        bf.Serialize(fs, user);
        fs.Close();

3)二进制反序列化

        FileStream fs  =   new  FileStream( @" D:/user.dat " , FileMode.OpenOrCreate);
        BinaryFormatter bf 
=   new  BinaryFormatter();
        User user 
=  (User)bf.Deserialize(fs);
        fs.Close();
        Response.Write(user.UserCode 
+  user.UserName);  //  因为User类中限制将usercode进行序列化, 所以UserCode =""

4) XML序列化,反序列化--SoapFormatter

   // 序列化
    FileStream fs  =   new  FileStream( @" D:/user.dat " , FileMode.OpenOrCreate);
        SoapFormatter sf 
=   new  SoapFormatter();
        User user 
=   new  User();
        user.UserName 
=   " KKK " ;
        user.UserCode 
=   " 0001 " ;
        sf.Serialize(fs, user);
        fs.Close();
        
        
// 反序列化
    FileStream fs  =   new  FileStream( @" D:user.dat " , FileMode.OpenOrCreate);
        SoapFormatter sf 
=   new  SoapFormatter();
        User user 
=  (User)sf.Deserialize(fs);
        fs.Close();
        Response.Write(user.UserCode 
+  user.UserName);  //  因为User类中限制将usercode进行序列化, 所以UserCode =""

5) XML序列化,反序列化--XmlSerializer


        
// 序列化
    FileStream fs  =   new  FileStream( @" D:/user.xml " , FileMode.OpenOrCreate);
     
User user  =   new  User();
        user.UserName 
=   " KKK " ;
        user.UserCode 
=   " 0001 " ;
           XmlSerializer xsl = new XmlSerializer(typeof(User));
        xsl.Serialize(fs, user);
        fs.Close();
        
        
// 反序列化
    FileStream fs  =   new  FileStream( @" D:/user.dat " , FileMode.OpenOrCreate);
        XmlSerializer xsl 
=   new  XmlSerializer();
        User user 
=  (User)xsl.Deserialize(fs);
        fs.Close();
        Response.Write(user.UserCode 
+  user.UserName);  //  因为User类中限制将usercode进行序列化, 所以UserCode =""
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值