二进制、SOAP的序列化及反序列化

二进制的序列化,反序列化。
需要序列化的类:


    [Serializable]
    
public class SerializableClass
    
{
        
string name = string.Empty;
        
int age = 0;
        
string grade = string.Empty;
        
public SerializableClass()
        
{

        }


        
public string Name
        
{
            
get
            
{
                
return name;
            }

            
set
            
{
                name 
= value;
            }

        }


        
public int Age
        
{
            
get
            
{
                
return age;
            }

            
set
            
{
                age 
= value;
            }

        }


        
public string Grade
        
{
            
get
            
{
                
return grade;
            }

            
set
            
{
                grade 
= value;
            }

        }

    }
实现序列化和反序列化
需要引用的命名空间
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

        public void SerialzableCless()
        
{
            
//将对象序列化
            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()
        
{
            
//将对象序列化
            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();

        }
下面是序列化后的文件
<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>

posted @ 2007-07-30 22:02  skylai  阅读(1203)  评论(0编辑  收藏  举报