C# C/无法将类型为的对象强制转换为类型

C# C/无法将类型为的对象强制转换为类型,c#,class,inheritance,polymorphism,C#,Class,Inheritance,Polymorphism,我正在尝试创建一个对象。但程序会抛出一个错误: 无法强制转换类型为的对象 以下是生成我的问题的代码: public class AnimalBase { public AnimalBase() { this.ArriveTime = DateTime.Now; } public DateTime ArriveTime { get; set; } public int ageAnimal { get; set; } public i

我正在尝试创建一个对象。但程序会抛出一个错误: 无法强制转换类型为的对象 以下是生成我的问题的代码:

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.gravelate”。}

我不知道为什么我会有这个问题,在msdn中它说我只需要显式地指定类型

感谢您的帮助

您的问题是AnimalBase.DoSomething返回的对象的具体类型是AnimalBase

尝试更改它以创建爬虫类实例:

AnimalBase animalbase = new Reptile();

失败的原因是您的继承层次结构。爬行动物是一种动物,但动物不一定是爬行动物。

你在倒退。。。爬行动物是一种动物,但不是所有的动物都是爬行动物。你应该把爬行动物扔给动物。我怎么能做到?我是否应该创建一个将animalBase显式转换为爬行动物的方法?