偶也碰到过这样的问题,是不是ArrayList不能序列化啊,用其他对象好像是可以得阿

解决方案 »

  1.   

    try
    using System;
    using System.IO;
    using System.Xml.Serialization;
    using System.Collections;
    using System.Xml;public class MyClass
    {
       [XmlElement(typeof(MyTestClass)),
       XmlElement(typeof(int)),
       XmlElement(typeof(string)),
       XmlElement(typeof(string[]))]
       public ArrayList MyContainer;
    }
    public class MyTestClass
    {
       public string Name;
    }
    public class Test
    {
       public static void Main()
       {
          string sFile = "OverrideElement.xml";
          Test t = new Test();
          t.SerializeObject(sFile);
          Console.WriteLine("enter to deserialize");
          Console.ReadLine();
          t.DeserializeObject(sFile);
       }   
       public void SerializeObject(string filename)
       {
          XmlSerializer xSer =  new XmlSerializer(typeof(MyClass));       MyClass myMyClass = new MyClass();      myMyClass.MyContainer = new ArrayList();
          MyTestClass myMyTestClass = new MyTestClass();
          myMyTestClass.Name = "MyMyTestClass";
          myMyClass.MyContainer.Add(myMyTestClass);
          myMyClass.MyContainer.Add("String");
          
          myMyClass.MyContainer.Add(100);      string[] slist = {"hello","world"};      myMyClass.MyContainer.Add(slist);      TextWriter writer = new StreamWriter(filename);
          xSer.Serialize(writer, myMyClass);
          writer.Close();
       }    public void DeserializeObject(string filename)
        {
          XmlSerializer xSer =  new XmlSerializer(typeof(MyClass)); 
          
          TextReader reader = new StreamReader(filename);      MyClass myMyClass = (MyClass)xSer.Deserialize( reader);      reader.Close();      foreach (object o in myMyClass.MyContainer)
          {
    Console.WriteLine("{0}:{1}", o.GetType().Name, o);
          }
       }
    }
      

  2.   

    saucer你不愧是 .Net MVP,佩服!这问题看似令人很困惑,原来竟一点不难办,我始终没有想到用typeof(object[])去声明我的对象数组,而一直在使用typeof(Array),感动加惭愧..所谓一分钱难倒英雄汉,看来还是自己学艺太浅。
    多谢,多谢