[英]XmlSerializer Throwing Exception “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.