Country.cs
Country
Copy Code
namespace CountryCity
{
    [Serializable]
    public class Country
    {
        public Country() { }
        public Country(string name, City[] cities)
        {
            Name = name;
            Cities.AddRange(cities);
        }
        private List<City> _cities;
        private City[] _cityArray;
        public string Name { get; set; }
        public string ISO2Name { get; set; }
        public string ISO3Name { get; set; }

        public City[] CityArray
        {
            get { return Cities.ToArray(); }
            set
            {
                _cityArray = value;
                if (_cityArray != null)
                {
                    Cities.Clear();
                    foreach (City city in _cityArray)
                    {
                        city.Country = this;
                        Cities.Add(city);
                    }
                }
            }
        }
        [XmlIgnore]
        public List<City> Cities
        {
            get
            {
                if (_cities is null)
                {
                    _cities = new List<City>();
                }
                return _cities;
            }
            set
            {
                _cities = value;
                foreach (City city in _cities)
                {
                    city.Country = this;
                }
            }
        }

        public static List<Country> GetCountries()
        {
            XmlSerializer xs = new XmlSerializer(typeof(List<Country>));
            XmlReader xr = XmlReader.Create("CountryCityConfig.xml");
            return (List<Country>)xs.Deserialize(xr);

        }
    }

    public class City
    {
        public City() { }
        public City(string name)
        {
            CityName = name;
        }
        public string CityName { get; set; }

        [XmlIgnore]
        public Country Country { get; set; }
    }
}