如何在返回的类中调用方法

Ven*_*lev -2 c#

我有一个函数来返回类实例.这里是:

public class Warrior{
    private Type GetSpec()
    {

        if ((WarriorSpecs)charData.CharacterSpec == WarriorSpecs.Barbarian)
        {
            return new Barbarian(charData).GetType();
        }
        if ((WarriorSpecs)charData.CharacterSpec == WarriorSpecs.Guardian)
        {
            return new Guardian(charData).GetType();
        }
        if ((WarriorSpecs)charData.CharacterSpec == WarriorSpecs.Knight)
        {
            return new Knight(charData).GetType();
        }

        return this.GetType();
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这些类Barbarian,Guardian,Knight是类的子类Warrior.

我的问题是为什么我不能做到以下几点:

public void FunctionInWarriorClass(){
    GetSpec.AnotherVoidInWarriorClass();
}
Run Code Online (Sandbox Code Playgroud)

我想要的只是GetSpec返回任何子类的实例,然后调用在Warrior类中声明的函数.这甚至可能吗?

Ant*_*nez 5

那是因为GetSpec()返回一个Type对象而不是Warrior子类.

试试这个:

private Warrior GetSpec()

{

    if ((WarriorSpecs)charData.CharacterSpec == WarriorSpecs.Barbarian)
    {
        return new Barbarian(charData);
    }
    if ((WarriorSpecs)charData.CharacterSpec == WarriorSpecs.Guardian)
    {
        return new Guardian(charData);
    }
    if ((WarriorSpecs)charData.CharacterSpec == WarriorSpecs.Knight)
    {
        return new Knight(charData);
    }

    return this;
}
Run Code Online (Sandbox Code Playgroud)