C#中如何序列化ArraryList和自定义类型 |
|
www.nanhushi.com 佚名 不详 |
在C#中如何序列化ArrayList,并且ArrayList中存放自定义的类型数据? 请看如下代码: ---------------------------------------- 先定义一个自定义类型: public struct LocalNetInfo { string localnet_name; string localnet_code; string pub_connection; string local_connection; public string Name { get { return localnet_name; } set { localnet_name = value; } } public string Code { get { return localnet_code; } set { localnet_code = value; } } public string PubConnection { get { return pub_connection; } set { pub_connection = value; } } public string LocalConnection { get { return local_connection; } set { local_connection = value; } } public override string ToString() { return Name; } } 考试大提示: 下面是序列化和反序列化函数: public string SerializeArrayList(ArrayList al) { Type[] extra = new Type[1]; extra[0] = typeof(LocalNetInfo); XmlSerializer xs = new XmlSerializer(typeof(ArrayList), extra); MemoryStream ms = new MemoryStream(); XmlTextWriter tw = new XmlTextWriter(ms, Encoding.Default); xs.Serialize(tw, al); tw.Close(); return Encoding.Default.GetString(ms.ToArray()); } public ArrayList DeserializeArrayList(string serQuestions, Type type, Type[] extratype) { XmlSerializer xs = new XmlSerializer(type, extratype); StreamReader sr = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(serQuestions)), System.Text.Encoding.Default); return (ArrayList)xs.Deserialize(sr); } 测试代码: ArrayList al = new ArrayList(); LocalNetInfo info = new LocalNetInfo(); info.Code = "11"; info.Name = "name1"; info.PubConnection = "ewere"; al.Add(info); LocalNetInfo info2 = new LocalNetInfo(); info2.Code = "112"; info2.Name = "name12"; info2.PubConnection = "ewere2"; al.Add(info2); //序列化.............. string s2 = SerializeArrayList(al); Type[] extra2 = new Type[1]; extra2[0] = typeof(LocalNetInfo); //反序列化........... ArrayList la = DeserializeArrayList(s2, typeof(ArrayList), extra2); 需要说明在反序列化时这里用到了Type[],这是关键! 考试大论坛
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C#基础C#的声明详细介绍 下一篇文章: C#数据库(c#通过调用存储过程返回表) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|