提到為了傳遞數據
序列化是將對象狀態轉換為可保持或傳輸的格式的過程
a
我們經常需要將對象的字段值保存到磁盤中
b
例如
公共語言運行時 (CLR) 管理對象在內存中的分布
當反序列化已序列化的類時
要實現對象的序列化
實現一個類可序列化的最簡便的方法就是增加Serializable屬性標記類
[Serializable()]
public class MEABlock
{
private int m_ID;
public string Caption;
public MEABlock()
{
///構造函數
}
}
即可實現該類的可序列化
要將該類的實例序列化為到文件中?
a
使用 XmLSerializer 類
公共類的公共讀/寫屬性和字段
實現 ICollection 或 IEnumerable 的類
XmlElement 對象
XmlNode 對象
DataSet 對象
要實現上述類的實例的序列化
MEABlock myBlock = new MEABlock();
// Insert code to set properties and fields of the object
XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));
// To write to a file
StreamWriter myWriter = new StreamWriter(
mySerializer
需要注意的是XML序列化只會將public的字段保存
生成的XML文件格式如下
<MEABlock>
<Caption>Test</Caption>
</MEABlock>
對於對象的反序列化
MEABlock myBlock;
// Constructs an instance of the XmlSerializer with the type
// of object that is being deserialized
XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));
// To read the file
FileStream myFileStream = new FileStream(
// Calls the Deserialize method and casts to the object type
myBlock = (MEABlock)mySerializer
b
與XML序列化不同的是
要實現上述類的實例的序列化
MEABlock myBlock = new MEABlock();
// Insert code to set properties and fields of the object
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(
formatter
stream
對於對象的反序列化
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(
MEABlock myBlock = (MEABlock) formatter
stream
對於WinForm中自定義控件
當然可以采用變通的方法實現控件的序列化
定義記憶類(其實就是一個可序列化的實體類)用於記錄控件的有效屬性
反序列化是一個逆過程
wwf之所以強調要把類實例化
From:http://tw.wingwit.com/Article/program/net/201311/13795.html