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

维内林

我有一个函数可以返回类实例。这里是:

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();
    }
}

所有这些类BarbarianGuardianKnight是类的子类Warrior

我的问题是为什么我不能执行以下操作:

public void FunctionInWarriorClass(){
    GetSpec.AnotherVoidInWarriorClass();
}

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

开发人员

那是因为 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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章