二进制的序列化,反序列化。
需要序列化的类:
[Serializable]
public
class
SerializableClass
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
string name = string.Empty;
int age = 0;
string grade = string.Empty;
public SerializableClass()
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string Name
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return name;
}
set
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
name = value;
}
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public int Age
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return age;
}
set
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
age = value;
}
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string Grade
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return grade;
}
set
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
grade = value;
}
}
}
实现序列化和反序列化
需要引用的命名空间
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public
void
SerialzableCless()
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
//将对象序列化
IFormatter format = new BinaryFormatter();
Stream stream = new FileStream(@"c:\fastyou.bin",FileMode.Create,FileAccess.Write,FileShare.None);
SerializableClass sc = new SerializableClass();
sc.Age = 26;
sc.Name = "fastyou";
sc.Grade = "Advance";
format.Serialize(stream, sc);
stream.Close();
//将文件流反序列化
Stream dstream = new FileStream(@"c:\fastyou.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
SerializableClass scc = (SerializableClass)format.Deserialize(dstream);
dstream.Close();
}
对同一个类进行Soap 序列化
需要的命名空间
using System.Runtime.Serialization.Formatters.Soap;
还需要add System.Runtime.Serialization.Formatters.Soap.dll
public
void
SoapSerialzable()
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
//将对象序列化
SoapFormatter format = new SoapFormatter();
Stream stream = new FileStream(@"c:\fastyou.soap", FileMode.Create, FileAccess.Write, FileShare.None);
SerializableClass sc = new SerializableClass();
sc.Age = 26;
sc.Name = "fastyou";
sc.Grade = "Advance";
format.Serialize(stream, sc);
stream.Close();
//将文件流反序列化
Stream dstream = new FileStream(@"c:\fastyou.soap", FileMode.Open, FileAccess.Read, FileShare.Read);
SerializableClass scc = (SerializableClass)format.Deserialize(dstream);
dstream.Close();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
下面是序列化后的文件
<
SOAP-ENV:Envelope
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd
="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC
="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV
="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:clr
="http://schemas.microsoft.com/soap/encoding/clr/1.0"
SOAP-ENV:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/"
>
<
SOAP-ENV:Body
>
<
a1:SerializableClass
id
="ref-1"
xmlns:a1
="http://schemas.microsoft.com/clr/nsassem/Test/Test%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull"
>
<
name
id
="ref-3"
>
fastyou
</
name
>
<
age
>
26
</
age
>
<
grade
id
="ref-4"
>
Advance
</
grade
>
</
a1:SerializableClass
>
</
SOAP-ENV:Body
>
</
SOAP-ENV:Envelope
>