C#中如何序列化ArraryList和自定義類型

字號:

在C#中如何序列化ArrayList,并且ArrayList中存放自定義的類型數(shù)據(jù)?
    請看如下代碼:
    ----------------------------------------
    先定義一個自定義類型:
    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;
    }
    }
    考試大提示: 下面是序列化和反序列化函數(shù):
    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[],這是關(guān)鍵!