【背景描述】:在開發軟件的過程當中,常常須要經過XML序列化一些對象,用於數據的傳輸與存儲spa
【問題描述】:如今有這樣一個問題,有3三個類,Movie,Cinema,SuperCinema。SuperCinema繼承自Cinema,具體看代碼。code
【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,更改了數據類型,此時序列化會報這樣的錯誤:blog
{"類型 System.Collections.Generic.List`1[System.String] 的成員 SuperCinema.Movies 隱藏類型 System.Collections.Generic.List`1[Json序列化與反序列化.Movie] 的基類成員 Cinema.Movies。使用 XmlElementAttribute 或 XmlAttributeAttribute 指定一個新名稱。"}繼承
此時若是僅僅在SuperCinema類中,在Movies屬性上加上[XmlElement("NewName")]並不起做用。開發
如:get
public class SuperCinema : Cinema { [XmlElement("NewMovie")] public new List<string> Movies { get; set; } }
既然咱們須要隱藏父類的Movies屬性,那麼直接在父類Cinema中使Movies屬性不進行序列化就能夠了。string
如:io
public class Cinema { public string Name { get; set; } [XmlIgnore] public List<Movie> Movies { get; set; } }