|
---.NET的運(yùn)行時(shí)環(huán)境用來(lái)支持用戶(hù)定義類(lèi)型的流化的機(jī)制。它是將對(duì)象實(shí)例的狀態(tài)存儲(chǔ)到存儲(chǔ)媒體的過(guò)程。在此過(guò)程中,先將對(duì)象的公共字段和私有字段以及類(lèi)的名稱(chēng)(包括類(lèi)所在的程序集)轉(zhuǎn)換為字節(jié)流,然后再把字節(jié)流寫(xiě)入數(shù)據(jù)流。在隨后對(duì)對(duì)象進(jìn)行反序列化時(shí),將創(chuàng)建出與原對(duì)象完全相同的副本。
序列化的目的:
1、以某種存儲(chǔ)形式使自定義對(duì)象持久化;
2、將對(duì)象從一個(gè)地方傳遞到另一個(gè)地方。
實(shí)質(zhì)上序列化機(jī)制是將類(lèi)的值轉(zhuǎn)化為一個(gè)一般的(即連續(xù)的)字節(jié)流,然后就可以將該流寫(xiě)到磁盤(pán)文件或任何其他流化目標(biāo)上。而要想實(shí)際的寫(xiě)出這個(gè)流,就要使用那些實(shí)現(xiàn)了IFormatter接口的類(lèi)里的Serialize和Deserialize方法。
private bool SerializeStudent(object obj)
{
FileDialog fd = new SaveFileDialog();
if (fd.ShowDialog() == DialogResult.OK | fd.FileName != null)
{
FileStream fs = new FileStream(fd.FileName, FileMode.Create, FileAccess.Write);
System.Xml.Serialization.XmlSerializer xmlSer = new System.Xml.Serialization.XmlSerializer(obj.GetType());
xmlSer.Serialize(fs, obj);
fs.Close();
return true;
}
else
{
return false;
}
}
private object DeSerializeStudent(object obj)
{
FileDialog fd = new OpenFileDialog();
object objStd;
if (fd.FileName != null | fd.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(fd.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
System.Xml.Serialization.XmlSerializer xmlSer = new System.Xml.Serialization.XmlSerializer(obj.GetType());
objStd = xmlSer.Deserialize(fs);
fs.Close();
return objStd;
}
else
{
return null;
}
}
AspNet技術(shù):asp.net 序列化and反序列化演示,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。