前言: 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。 把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。
这里还要注意对象的序列化主要有两种用途:1) 在网络上传送对象的字节序列。2) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。
.net为我们主要提供了三种序列化方式:
序列化和反序列化(转)
它们的主要区别请参考下图:
序列化和反序列化(转)
最后来三段代码,简单实现常用的序列化和反序列化。
1、使用BinaryFormatter

 Serialize(User testUser)
        {  

            //可以用MemoryStream等
            
using (FileStream fs = new FileStream(strFile, FileMode.Create))
            {
                BinaryFormatter formatter 
= new BinaryFormatter();
                formatter.Serialize(fs, testUser);
            }
        }

        
public static User DeSerialize()
        {
            User testUser 
= null;
            
using (FileStream fs = new FileStream(strFile, FileMode.Open))
            {
                BinaryFormatter formatter 
= new BinaryFormatter();
                testUser 
= (User)formatter.Deserialize(fs);
            }
            
return testUser;
        }
    }

    
public class Program
    {
        
static void Main()
        {
            SerializeUtil.Serialize(
new User());//序列化
            User tmpUser = SerializeUtil.DeSerialize();//反序列化
            Console.WriteLine(tmpUser.tid + "-" + tmpUser.name);
            Console.WriteLine(tmpUser.sex); 
//sex被标识为不可序列化,所以总为null
            Console.ReadLine();
        }
    }
}

2、使用SoapFormatter
 先添加System.Runtime.Serialization.Formatters.Soap引用,然后和BinaryFormatter类似,我们只需要做一下简单修改即可:
 a.将using语句中的.Formatter.Binary改为.Formatter.Soap;
 b.将所有的BinaryFormatter替换为SoapFormatter.
 c.确保报存文件的扩展名为.xml
 经过上面简单改动,即可实现SoapFormatter的串行化,这时候产生的文件就是一个xml格式的文件。

            Console.ReadLine();
        }
    }
}

(3)、使用XmlSerializer
想使用XmlSeralizer进行串行化我们需要做一下修改:
 a.添加System.Xml.Serialization命名空间.
 b.Serializable和NoSerialized属性将被忽略,而是使用XmlIgnore属性,它的行为与NoSerialized类似.
 c.XmlSeralizer要求类有个默认的构造器.

 tmpUser.name);
            Console.WriteLine(tmpUser.sex);
            Console.ReadLine();
        }
    }
}

相关文章:

  • 2021-12-12
猜你喜欢
  • 2021-06-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-25
  • 2022-12-23
相关资源
相似解决方案