我有一个函数来返回类实例.这里是:
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类中声明的函数.这甚至可能吗?
那是因为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)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |