【.Net基础02】XML序列化问题
【背景描述】:在開發(fā)軟件的過程中,經(jīng)常需要通過XML序列化一些對(duì)象,用于數(shù)據(jù)的傳輸與存儲(chǔ)
【問題描述】:現(xiàn)在有這樣一個(gè)問題,有3三個(gè)類,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,更改了數(shù)據(jù)類型,此時(shí)序列化會(huì)報(bào)這樣的錯(cuò)誤:
{"類型 System.Collections.Generic.List`1[System.String] 的成員 SuperCinema.Movies 隱藏類型 System.Collections.Generic.List`1[Json序列化與反序列化.Movie] 的基類成員 Cinema.Movies。使用 XmlElementAttribute 或 XmlAttributeAttribute 指定一個(gè)新名稱。"}
此時(shí)如果僅僅在SuperCinema類中,在Movies屬性上加上[XmlElement("NewName")]并不起作用。
如:
public class SuperCinema : Cinema{[XmlElement("NewMovie")]public new List<string> Movies { get; set; }}?
既然我們需要隱藏父類的Movies屬性,那么直接在父類Cinema中使Movies屬性不進(jìn)行序列化就可以了。
如:
public class Cinema{public string Name { get; set; }[XmlIgnore]public List<Movie> Movies { get; set; }}?
轉(zhuǎn)載于:https://www.cnblogs.com/fb-boy/p/3473581.html
總結(jié)
以上是生活随笔為你收集整理的【.Net基础02】XML序列化问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS开发报错之Undefined sy
- 下一篇: paip. 内存占用少的php ide选