[英]C# Not able to serialize class with List<CustomObject> as property
嗨,我想序列化
FileStream fileStream = new FileStream("batches.xml", FileMode.Open);
XmlSerializer serializer = new XmlSerializer(typeof(List<Batche>));
List<Batche> listOfBatches = new List<Batche>();
[Serializable]
[XmlRoot("Batch")]
public class Batche
{
[XmlElement("Title")]
public string Title
{
get;set;
}
[XmlArray("ListOfLinks"),XmlArrayItem("Link",Type = typeof(Link))]
public List<Link> Links
{
get;set;
}
}
[Serializable]
[XmlRoot("Link")]
public class Link
{
[XmlElement("Uri")]
public Uri Uri
{
get;
set;
}
[XmlElement("Status")]
public string Status
{
get;
set;
}
}
獲取以下錯誤:有一個錯誤反映了類型'System.Collections.Generic.List`1 [DownloadTRON.Entities.Batche]'。
自從過去4個小時以來一直在嘗試這個,任何身體都可以指出我做錯了什么!
關心普拉文
您的代碼或泛型的序列化沒有問題。 Uri沒有默認構造函數,無法序列化。 考慮將其更改為字符串,事情就會奏效。 如果您只打算使用XmlSerializer,則可以刪除Serializable屬性,因為它未被使用。
當我使用調試器運行代碼並看到異常時,內部異常有內部異常,依此類推。 如果可以的話,總是一個好主意跟着那只兔子走下去。
您需要將xml中的其他類型傳遞給XmlSerializer,在您的案例中為Link類型。 用這個
XmlSerializer serializer = new XmlSerializer(typeof(List<Batche>), new Type[] {typeof(Link)});
您自己的類必須實現沒有參數的公共構造函數,例如對於類Link,您必須實現一個額外的構造函數
public Link(){}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.