C#中如何序列化ArraryList和自定义类型

在C#中如何序列化ArrayList,并且ArrayList中存放自定义的类型数据?

请看如下代码:

----------------------------------------

先定义一个自定义类型:

  1.     public struct LocalNetInfo
  2.     {
  3.         string localnet_name;
  4.         string localnet_code;
  5.         string pub_connection;
  6.         string local_connection;
  7.         public string Name
  8.         {
  9.             get { return localnet_name; }
  10.             set { localnet_name = value; }
  11.         }
  12.         public string Code
  13.         {
  14.             get { return localnet_code; }
  15.             set { localnet_code = value; }
  16.         }
  17.         public string PubConnection
  18.         {
  19.             get { return pub_connection; }
  20.             set { pub_connection = value; }
  21.         }
  22.         public string LocalConnection
  23.         {
  24.             get { return local_connection; }
  25.             set { local_connection = value; }
  26.         }
  27.         public override string ToString()
  28.         {
  29.             return Name;
  30.         }
  31.     }

下面是序列化和反序列化函数:

  1.         public string SerializeArrayList(ArrayList al)
  2.         {
  3.             Type[] extra = new Type[1];
  4.             extra[0] = typeof(LocalNetInfo);
  5.             XmlSerializer xs = new XmlSerializer(typeof(ArrayList), extra);
  6.             MemoryStream ms = new MemoryStream();
  7.             XmlTextWriter tw = new XmlTextWriter(ms, Encoding.Default);
  8.             xs.Serialize(tw, al);
  9.             tw.Close();
  10.             return Encoding.Default.GetString(ms.ToArray());
  11.         }
  12.         public ArrayList DeserializeArrayList(string serQuestions, Type type, Type[] extratype)
  13.         {
  14.             XmlSerializer xs = new XmlSerializer(type, extratype);
  15.             StreamReader sr = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(serQuestions)), System.Text.Encoding.Default);
  16.             return (ArrayList)xs.Deserialize(sr);
  17.         }

测试代码:

  1.             ArrayList al = new ArrayList();
  2.             LocalNetInfo info = new LocalNetInfo();
  3.             info.Code = "11";
  4.             info.Name = "name1";
  5.             info.PubConnection = "ewere";
  6.             al.Add(info);
  7.             LocalNetInfo info2 = new LocalNetInfo();
  8.             info2.Code = "112";
  9.             info2.Name = "name12";
  10.             info2.PubConnection = "ewere2";
  11.             al.Add(info2);
  12.             //序列化..............
  13.             string s2 = SerializeArrayList(al);
  14.             Type[] extra2 = new Type[1];
  15.             extra2[0] = typeof(LocalNetInfo);
  16.             //反序列化...........
  17.             ArrayList la = DeserializeArrayList(s2, typeof(ArrayList), extra2);

需要说明在反序列化时这里用到了Type[],这是关键!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值