【.Net基础02】XML序列化问题
生活随笔
收集整理的這篇文章主要介紹了
【.Net基础02】XML序列化问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【背景描述】:在開發軟件的過程中,經常需要通過XML序列化一些對象,用于數據的傳輸與存儲
【問題描述】:現在有這樣一個問題,有3三個類,Movie,Cinema,SuperCinema。SuperCinema繼承自Cinema,具體看代碼。
【Code】
?
public class Movie{public string Id { get; set; }public string Name { get; set; }public DateTime ProduceTime { get; set; }public string DirectorName { get; set; }}?
public class Cinema{public string Name { get; set; }public List<Movie> Movies { get; set; }}?
public class SuperCinema : Cinema{public new List<string> Movies { get; set; }}?
static void Main(string[] args){SuperCinema c1 = new SuperCinema();XmlSerializer serializer = new XmlSerializer(typeof(SuperCinema));Console.Read();}?
SuperCinema中隱藏了父類中的成員Movies,更改了數據類型,此時序列化會報這樣的錯誤:
{"類型 System.Collections.Generic.List`1[System.String] 的成員 SuperCinema.Movies 隱藏類型 System.Collections.Generic.List`1[Json序列化與反序列化.Movie] 的基類成員 Cinema.Movies。使用 XmlElementAttribute 或 XmlAttributeAttribute 指定一個新名稱。"}
此時如果僅僅在SuperCinema類中,在Movies屬性上加上[XmlElement("NewName")]并不起作用。
如:
public class SuperCinema : Cinema{[XmlElement("NewMovie")]public new List<string> Movies { get; set; }}?
既然我們需要隱藏父類的Movies屬性,那么直接在父類Cinema中使Movies屬性不進行序列化就可以了。
如:
public class Cinema{public string Name { get; set; }[XmlIgnore]public List<Movie> Movies { get; set; }}?
轉載于:https://www.cnblogs.com/fb-boy/p/3473581.html
總結
以上是生活随笔為你收集整理的【.Net基础02】XML序列化问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS开发报错之Undefined sy
- 下一篇: paip. 内存占用少的php ide选