asp.net 序列化and反序列化演示
更新時間:2008年10月28日 13:56:45 作者:
實質(zhì)上序列化機制是將類的值轉(zhuǎn)化為一個一般的(即連續(xù)的)字節(jié)流,然后就可以將該流寫到磁盤文件或任何其他流化目標上。而要想實際的寫出這個流,就要使用那些實現(xiàn)了IFormatter接口的類里的Serialize和Deserialize方法。
什么是序列化?
---.net的運行時環(huán)境用來支持用戶定義類型的流化的機制。它是將對象實例的狀態(tài)存儲到存儲媒體的過程。在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉(zhuǎn)換為字節(jié)流,然后再把字節(jié)流寫入數(shù)據(jù)流。在隨后對對象進行反序列化時,將創(chuàng)建出與原對象完全相同的副本。
序列化的目的:
1、以某種存儲形式使自定義對象持久化;
2、將對象從一個地方傳遞到另一個地方。
實質(zhì)上序列化機制是將類的值轉(zhuǎn)化為一個一般的(即連續(xù)的)字節(jié)流,然后就可以將該流寫到磁盤文件或任何其他流化目標上。而要想實際的寫出這個流,就要使用那些實現(xiàn)了IFormatter接口的類里的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;
}
}
---.net的運行時環(huán)境用來支持用戶定義類型的流化的機制。它是將對象實例的狀態(tài)存儲到存儲媒體的過程。在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉(zhuǎn)換為字節(jié)流,然后再把字節(jié)流寫入數(shù)據(jù)流。在隨后對對象進行反序列化時,將創(chuàng)建出與原對象完全相同的副本。
序列化的目的:
1、以某種存儲形式使自定義對象持久化;
2、將對象從一個地方傳遞到另一個地方。
實質(zhì)上序列化機制是將類的值轉(zhuǎn)化為一個一般的(即連續(xù)的)字節(jié)流,然后就可以將該流寫到磁盤文件或任何其他流化目標上。而要想實際的寫出這個流,就要使用那些實現(xiàn)了IFormatter接口的類里的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;
}
}
相關(guān)文章
ASP.NET?Core?Web?API之Token驗證的實現(xiàn)
本文主要介紹了ASP.NET?Core?Web?API之Token驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
.net6環(huán)境下使用RestSharp請求GBK編碼網(wǎng)頁亂碼的解決方案
這篇文章介紹了.net6環(huán)境下使用RestSharp請求GBK編碼網(wǎng)頁亂碼的解決方案,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
asp.net實現(xiàn)在非MVC中使用Razor模板引擎的方法
這篇文章主要介紹了asp.net實現(xiàn)在非MVC中使用Razor模板引擎的方法,較為詳細的分析了Razor模板引擎的使用技巧,需要的朋友可以參考下2015-06-06
asp.net程序優(yōu)化 盡量減少數(shù)據(jù)庫連接操作
最近做一個項目,做的比較郁悶,現(xiàn)在把項目經(jīng)驗總結(jié)在這里。項目的主要功能就是為第三方程序提供數(shù)據(jù),并根據(jù)客戶端的調(diào)用提供數(shù)據(jù)更新。我的程序?qū)儆诜?wù)端。服務(wù)端以站點形式部署,以Xml的數(shù)據(jù)格式輸出2012-05-05
ASP.NET MVC+EF框架+EasyUI實現(xiàn)權(quán)限管系列
在學(xué)習(xí)MVC之前,我們有必要知道這些知識點(自動屬性,隱式類型var,對象初始化器和集合初始化器,匿名類,擴展方法,Lambda表達式),如果你還不知道的話就請看我下面的簡單的介紹,看下面我建立的項目的初步圖像,然后下篇我們開始簡單的介紹。2014-11-11
ASP.NET Core Middleware的實現(xiàn)方法詳解
中間件是組裝到應(yīng)用程序管道中以處理請求和響應(yīng)的軟件。下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core Middleware實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2019-01-01

