C#可以序列化,壹般可以轉成[二進制序列化][SOAP序列化][XML 序列化],就舉個XML的例子吧。寫了壹個類並序列化和反序。
1、我寫的是控制臺程序
2、要引用using System.Xml.Serialization;using System.IO;
3、Person類中,Address屬性我定義了忽略,他不會被序列化,所以妳打開XML是看不到這個字段的。
4、文件我寫死了,是D盤的1234.xml,妳可以改。
=====代碼====
[Serializable]public?class?Person
{
///?<summary>
///?姓名
///?</summary>
public?string?Name?{?get;?set;?}
///?<summary>
///?年齡
///?</summary>
public?int?Age?{?get;?set;?}
///?<summary>
///?地址,屬性指這個字段不序列化
///?</summary>
[XmlIgnore]
public?string?Address?{?get;?set;?}
}
上面是個類,要序列化,就要寫特性[Serializable],下面是我寫的兩個方法
///?<summary>///?序列化
///?</summary>
///?<param?name="type"></param>
///?<param?name="obj"></param>
static?void?CreateSerialize(Type?type,?object?obj)
{
XmlSerializer?xs?=?new?XmlSerializer(type);
Stream?stream?=?new?FileStream(@"d:\1234.XML",?FileMode.Create,?FileAccess.ReadWrite,?FileShare.ReadWrite);
xs.Serialize(stream,?obj);
stream.Close();
}
///?<summary>
///?反序
///?</summary>
///?<param?name="type"></param>
///?<returns></returns>
static?object?XMLDeserialize(Type?type)
{
XmlSerializer?xs?=?new?XmlSerializer(type);
Stream?stream?=?new?FileStream(@"d:\\1234.XML",?FileMode.Open,?FileAccess.Read,?FileShare.Read);
var?str?=?xs.Deserialize(stream);
stream.Close();
return?str;
}
妳可以在主程序中Main()中調用上面的方法,我給了例子。
//建立幾個對象List<Person>?list?=?new?List<Person>()
{
new?Person(){?Name?=?"張三",?Age?=?18,?Address?=?"A小區"?},
new?Person(){?Name?=?"李四",?Age?=?21,?Address?=?"B小區"?},
new?Person(){?Name?=?"王五",?Age?=?23,?Address?=?"C小區"?},
new?Person(){?Name?=?"趙六",?Age?=?17,?Address?=?"D小區"?},
new?Person(){?Name?=?"錢七",?Age?=?22,?Address?=?"E小區"?},
};
foreach?(var?obj?in?list)
{
Console.WriteLine("Name?=?"?+?obj.Name?+?"\tAge?=?"?+?obj.Age?+?"\t地址?=?"?+?(String.IsNullOrEmpty(obj.Address)"空"?:?obj.Address));
}
Console.WriteLine("序列化開始....");
CreateSerialize(typeof(List<Person>),?list);
Console.WriteLine("序列化結束....");
Console.WriteLine("反序列化開始....");
var?dList?=?XMLDeserialize(typeof(List<Person>))?as?List<Person>;
foreach?(var?obj?in?dList)
{
Console.WriteLine("Name?=?"?+?obj.Name?+?"\tAge?=?"?+?obj.Age?+?"\t地址?=?"?+?(String.IsNullOrEmpty(obj.Address)"空"?:?obj.Address));
}
Console.WriteLine("反序列化結束....");
Console.ReadKey();
這只是個簡單的例子。