【.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; } }
请注明文章出处[http://www.cnblogs.com/fb-boy/]