多个对象序列化和反序列化
namespace Dome
{
//声明对象
public class Account
{
public int UserID { get; set; }
public string Username { get; set; }
public string UserPass { get; set; }
}
class Param
{
//数组赋值
static Account[] accounts =
{
new Account(){UserID=1,Username="Name1",UserPass="Pass1"},
new Account(){UserID=2,Username="Name2",UserPass="Pass2"},
new Account(){UserID=3,Username="Name3",UserPass="Pass3"}
};
static void Main(string[] args)
{
SerializerMethod();
DeSerializerMethod();
}
static string SavePath = @"D:\XmlSerializer.xml";
//将对象序列化到XML文档中
static XmlSerializer xmls = new XmlSerializer(typeof(Account[]));
//序列化
public static void SerializerMethod()
{
using (TextWriter tw = new StreamWriter(SavePath))
{
xmls.Serialize(tw, accounts);
tw.Close();
}
}
//反序列化
public static void DeSerializerMethod()
{
using (TextReader tr = new StreamReader(SavePath))
{
Account[] DeSerialzer = xmls.Deserialize(tr) as Account[];
if (DeSerialzer != null && DeSerialzer.Length > 0)
{
for (int i = 0; i < DeSerialzer.Length; i++)
Console.WriteLine("id={0}\t UserID={1},UserName={2},UserPass={3}", i, DeSerialzer[i].UserID, DeSerialzer[i].Username, DeSerialzer[i].UserPass);
}
}
Console.ReadKey();
}
}
}
二进制方式,可以使用BinaryFormatter 类来以二进制格式将对象或整个连接对象图形序列化和反序列化
namespace Demo2
{
[Serializable]
public class Account
{
public int UserID { get; set; }
public string Username { get; set; }
public string Address { get; set; }
}
class param
{
static void Main(string[] args)
{
Account[] accounts =
{
new Account(){UserID=1,Username="科比",Address="湖人"},
new Account(){UserID=2,Username="韦德",Address="热火"},
new Account(){UserID=3,Username="姚明",Address="火箭"}
};
BinaryFormatter format = new BinaryFormatter();
string savePath = @"D:\BinSerialzer.xml";
//序列化
using (FileStream fsw = new FileStream(savePath, FileMode.Create, FileAccess.Write))
{
format.Serialize(fsw,accounts);
fsw.Close();
}
//反序列化
using (FileStream fsr = new FileStream(savePath, FileMode.Open, FileAccess.Read))
{
Account[] deserialzer = format.Deserialize(fsr)as Account[];
if (deserialzer != null && deserialzer.Length > 0)
{
for (int i = 0; i < deserialzer.Length; i++)
{
Console.WriteLine(" UserID={0},UserName={1},Address={1}",accounts[i].UserID,accounts[i].Username,accounts[i].Address);
}
}
}
Console.ReadKey();
}
}
}
本文介绍如何使用XML和二进制格式进行对象的序列化与反序列化操作。通过示例展示了如何将.NET中的对象序列化为XML文件及二进制文件,并从这些文件中反序列化出原始对象。
702

被折叠的 条评论
为什么被折叠?



