C# 抽象类,其方法用于抽象不明确的原型';我不能在C工作#

C# 抽象类,其方法用于抽象不明确的原型';我不能在C工作#,c#,interface,abstract-class,overriding,C#,Interface,Abstract Class,Overriding,假设我有两个类Player和Npc以及一个抽象类实体 如何使实体类忽略原型中的不明确类?它不应该关心其抽象。 我看到的唯一选择是对两者都使用包装,这似乎是一件非常愚蠢的事情 人大班 class Npc : Entity { private NpcSkills skills; //npc skills ... public Npc(int id) { this.id = id; skills = new NpcSkills(thi

假设我有两个类Player和Npc以及一个抽象类实体

如何使实体类忽略原型中的不明确类?它不应该关心其抽象。
我看到的唯一选择是对两者都使用包装,这似乎是一件非常愚蠢的事情

人大班

class Npc : Entity {
    private NpcSkills skills; //npc skills
    ...

    public Npc(int id) 
    {
        this.id = id;
        skills = new NpcSkills(this); //<- Yes its a new class NpcSkills not Skills.
        ...
    }

    public override NpcSkills getSkills() //<-- Method has same name, different class then Player.
    {
        return skills;
    }
    ...
}
类Npc:实体{
私人npc技能;//npc技能
...
公共Npc(国际id)
{
this.id=id;

skills=newnpcskills(this);//您可以从同一基类派生
skills
NpcSkills
类,比如
SkillsBase
,并声明您的
getSkills
方法如下:

public abstract SkillsBase getSkills();

您可以从同一基类派生
Skills
NpcSkills
类,例如
SkillsBase
,并声明您的
getSkills
方法,如下所示:

public abstract SkillsBase getSkills();

您可以从同一基类派生
Skills
NpcSkills
类,例如
SkillsBase
,并声明您的
getSkills
方法,如下所示:

public abstract SkillsBase getSkills();

您可以从同一基类派生
Skills
NpcSkills
类,例如
SkillsBase
,并声明您的
getSkills
方法,如下所示:

public abstract SkillsBase getSkills();

是的..这就是我试图避免制作包装器的原因..我在想也许有一个我可以使用的对象或者我不知道的东西。@SSpoke,据我所知,这是你实现你想要的东西的唯一方法(
int currentHp=getSkills().getHealth();//是的,我会..我希望它是
如果(对象是NpcSkills)
否则(对象是Skills)
只是为了避免包装..但我也不想将
getSkills()
更改为
object getSkills()
那些getSkills()在任何地方都被使用,现在不能让它们返回对象。有没有可能让它成为一个只用于抽象类的
对象
对象?不,不可能只限于抽象类。是的……这就是我试图避免制作包装器的原因……我在想,可能有一个对象我可以使用,或者类似的东西我不知道。@SSpoke,据我所知,这是您实现所需功能的唯一方法(
int currentHp=getSkills().getHealth();//是的,我想..我希望它是
if(object is NpcSkills)
else if(object is Skills)
只是为了避免包装器..但我也不想更改
getSkills()
进入
对象getSkills()
那些getSkills()在任何地方都被使用,现在不能让它们返回对象。有没有可能让它成为一个只用于抽象类的
对象
对象?不,不可能只限于抽象类。是的……这就是我试图避免制作包装器的原因……我在想,可能有一个对象我可以使用,或者类似的东西我不知道。@SSpoke,据我所知,这是您实现所需功能的唯一方法(
int currentHp=getSkills().getHealth();//是的,我想..我希望它是
if(object is NpcSkills)
else if(object is Skills)
只是为了避免包装器..但我也不想更改
getSkills()
进入
对象getSkills()
那些getSkills()在任何地方都被使用,现在不能让它们返回对象。有没有可能让它成为一个只用于抽象类的
对象
对象?不,不可能只限于抽象类。是的……这就是我试图避免制作包装器的原因……我在想,可能有一个对象我可以使用,或者类似的东西我不知道。@SSpoke,据我所知,这是您实现所需功能的唯一方法(
int currentHp=getSkills().getHealth();//是的,我想..我希望它是
if(object is NpcSkills)
else if(object is Skills)
只是为了避免包装器..但我也不想更改
getSkills()
into
object getSkills()
这些getSkills()在任何地方都被使用,现在不能让它们返回对象的。是否可以将它变成一个仅用于抽象类的
object
对象?不,不可能将它仅限于抽象类。