【.Net基礎02】XML序列化問題

【背景描述】:在開發軟件的過程當中,常常須要經過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; }
    }
相關文章
相關標籤/搜索