簡體   English   中英

XmlSerializer拋出異常“System.InvalidOperationException”

[英]XmlSerializer Throwing Exception “System.InvalidOperationException”

我試圖將列表數據設置為xml格式。 我有一個復雜的對象

class user包含另一個類對象列表的Info

[Serializable]
class UserInfo : Address
{
    [XmlElement("Firstname")]
    public  String firstname { get; set; }
    [XmlElement("Surname")]
    public String surname { get; set; }
    [XmlArray("Addresses")]
   // [XmlArrayItem("Address",typeof(Address))]
    public List<Address> addressesL { get; set;}
}

地址類只有一個字符串字段

  class Address
{

[XmlElement("Address")]
   public String saddress { get; set; }
}

這是主要的

static void Main(string[] args)
    {



        UserInfo user = new UserInfo();
        Address adres = new Address();
        List<Address> adresl = new List<Address>();
        List<UserInfo> userlist = new List<UserInfo>();
        user.firstname = "Mustafa";
        user.surname = "Alqanbar";

        adres.saddress = "Saudi Arabia";
        adresl.Add(adres);

        adres = new Address();
        adres.saddress = "Australia";
        adresl.Add(adres);

        user.addressesL = adresl;


        userlist.Add(user);

        for (int i = 0; i < userlist.Count; i++)
        {
            Console.Write("{0} {1}  ",userlist[i].firstname, userlist[i].surname);
            for (int j = 0; j < userlist[i].addressesL.Count; j++) 
            {
                Console.Write("{0} ",userlist[i].addressesL[j].saddress);
            }
            Console.WriteLine();
        }
        XmlSerializer ser = new XmlSerializer((typeof(List<UserInfo>)));
       // XmlSerializer deser = XmlSerializer.FromTypes(new[] { (typeof(List<UserInfo>)) })[0];


            using (TextWriter writer = new StreamWriter(@"c:\x.xml"))
            {
                ser.Serialize(writer, user);
            }


            Console.ReadKey();
    }

我在堆棧溢出中讀了一些帖子,但我無法解決我的問題。

根據我的理解, XmlSerializer要編寫和讀取的類必須在其命名空間中聲明為public ; 至少在這個例子中是這種情況。

如果我改變字符串XmlSerializer ser = new XmlSerializer((typeof(List<UserInfo>))); XmlSerializer ser = new XmlSerializer(typeof(UserInfo)); 那對我有用。

這些類應該聲明為public

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM