Класс Countries
происходит от List<Country>
, что означает, что он более конкретен. Вы не можете назначить более общий класс для ссылки, предназначенной для чего-то более конкретного.
Countries countries = new List<Country>(); //Won't work
String s = new object(); //Won't work
Вы можете назначить для общего, например,
List<Country> countries = new Countries(); //Will work
object o = ""; //Will work
Если у вас есть List<Country>
и вам нужно преобразовать его в Countries
объект, вы можете сделать это, реализовав один из конструкторов, который позволяет заполнять список, например так:
public class Country
{
public string Name { get; set; }
}
public class Countries : List<Country>
{
public Countries(IEnumerable<Country> initializationData) : base(initializationData)
{
//No body. Work is done by base class constructor.
}
}
Теперь вы можете:
List<Country> list = new List<Country>();
Countries countries = new Countries(list);
Обратите внимание, что этот список дублирует, а не преобразует список, поэтому вы получите две ссылки на два разных объекта, которые содержат одинаковые данные. Это единственный способ сделать это.