簡體   English   中英

C#無法使用List序列化類 <CustomObject> 作為財產

[英]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.

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