C # / Невозможно привести объект типа к типу - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать объект. но программа выдает ошибку: Невозможно привести объект типа Вот код, который генерирует мою проблему:

public class AnimalBase
{
    public AnimalBase()
    {
        this.ArriveTime = DateTime.Now;
    }
    public DateTime ArriveTime { get; set; }
    public int ageAnimal { get; set; }

    public int poidsAnimal { get; set; }

    public virtual string typeAnimal
    {
        get
        {
            return "AnimalBase";
        }
    }

    public  static  AnimalBase DoSomething(string value)
    {
        AnimalBase animalbase = new AnimalBase();
        animalbase.ArriveTime = DateTime.Now;
        animalbase.ageAnimal = 1;
        animalbase.poidsAnimal = 2;            
        return animalbase;
    }
}
 public class Reptile: AnimalBase
{
    public override string typeAnimal
    {
        get
        {
            return "Reptile";
        }
    }
    public Reptile():base()
    {

    }
}

   class Program
{
    static void Main(string[] args)
    {
        //ERROR
        Reptile rep = (Reptile)AnimalBase.DoSomething("text");

        Console.ReadLine();
    }
}

Ошибка: {"Невозможно привести объект типа 'ConsoleApplication1.AnimalBase' к типу 'ConsoleApplication1.Reptile'."}

Я не знаю, почему у меня такая проблема, в msdn говорится, что мне просто нужно явно указать тип.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 30 апреля 2018

Ваша проблема в том, что AnimalBase.DoSomething возвращает объект с конкретным типом AnimalBase.

Попробуйте изменить его, чтобы создать экземпляр Reptile:

AnimalBase animalbase = new Reptile();

Причина, по которой это не получается, из-за вашей иерархии наследования. A Reptile - это AnimalBase, но AnimalBase не обязательно является Reptile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...