У меня проблемы с добавлением экземпляра класса, который реализует интерфейс, в список этого интерфейса ; Я получаю ошибки проверки типа.
У меня есть следующее:
- Базовый класс
Pet
, содержащий два поля, общих для всех питомцев: PetId
и Name
. - Интерфейс
PetInterface
, обеспечивающий два поля: PetId
и Name
. - Конкретные классы
Dog
и Cat
, которые наследуются от Pet
и реализуют PetInterface
.
Код:
public interface PetInterface
{
public int PetId { get; set; }
public string Name { get; set; }
}
public class Pet
{
public int PetId { get; set; }
public string Name { get; set; }
}
public class Dog: Pet, PetInterface
{
}
public class Cat: Pet, PetInterface
{
}
Сценарий 1:
var dog = new Dog();
var cat = new Cat();
List<PetInterface> petInterfaceList = new List<PetInterface>();
petInterfaceList.Add(dog1); //Error: cannot convert Dog to PetInterface class
petInterfaceList.Add(cat1); //Error: cannot convert Cat to PetInterface class
Сценарий 2:
var dog = new Dog();
var cat = new Cat();
var petList = new List<Pet>({dog, cat});
List<PetInterface> petInterfaceList = petList //Error: cannot convert List<Pet> to List<PetInterface>
Что мне здесь не хватает?