XmlSerializer, DataContractSerializer 和 BinaryFormatter區別與用法分析:http://www.cnblogs.com/nankezhishi/archive/2012/05/12/serializationcompare.html
1. DataContractSerializer :所有類均可實例化,不需要加可序列化關鍵詞
(1)序列化:
try
{
fs = new FileStream(文件名, FileMode.Create);
ser = new DataContractSerializer(typeof(類名));
ser.WriteObject(fs, 類實例變量);
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
(2)反序列化:
FileStream fs = new FileStream(文件名, FileMode.Open);
XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
DataContractSerializer ser = new DataContractSerializer(typeof(類名));
類名 類實例名 = (類名)ser.ReadObject(reader, true);
psidentify = new 類名(類實例名); //array to List
reader.Close();
fs.Close();
2. BinaryFormatter:類定義前需加關鍵詞[Serializable],文件小,內容不易解讀
(1)序列化:
fs = new FileStream(文件名, FileMode.Create);
try
{
formatter.Serialize(fs, 類實例名);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
(2)反序列化:
fs = new FileStream(文件名, FileMode.Open);
try
{
類實例名 = (類名)formatter.Deserialize(fs);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}